Font.php in File metadata manager 8.2
File
file_mdm_font/src/Plugin/FileMetadata/Font.php
View source
<?php
namespace Drupal\file_mdm_font\Plugin\FileMetadata;
use Drupal\file_mdm\FileMetadataException;
use Drupal\file_mdm\Plugin\FileMetadata\FileMetadataPluginBase;
use FontLib\Font as LibFont;
use FontLib\Table\Type\name;
class Font extends FileMetadataPluginBase {
public function getSupportedKeys($options = NULL) {
return array_merge([
'FontType',
'FontWeight',
], array_values(name::$nameIdCodes));
}
protected function doGetMetadataFromFile() {
$font = LibFont::load($this
->getLocalTempPath());
@$font
->parse();
$keys = $this
->getSupportedKeys();
$metadata = [];
foreach ($keys as $key) {
$l_key = strtolower($key);
switch ($l_key) {
case 'fonttype':
$metadata[$l_key] = $font
->getFontType();
break;
case 'fontweight':
$metadata[$l_key] = $font
->getFontWeight();
break;
default:
$code = array_search($l_key, array_map('strtolower', name::$nameIdCodes), TRUE);
if ($value = $font
->getNameTableString($code)) {
$metadata[$l_key] = $value;
}
break;
}
}
return $metadata;
}
protected function validateKey($key, $method) {
if (!is_string($key)) {
throw new FileMetadataException("Invalid metadata key specified", $this
->getPluginId(), $method);
}
if (!in_array(strtolower($key), array_map('strtolower', $this
->getSupportedKeys()), TRUE)) {
throw new FileMetadataException("Invalid metadata key '{$key}' specified", $this
->getPluginId(), $method);
}
return TRUE;
}
protected function doGetMetadata($key = NULL) {
if ($key === NULL) {
return $this->metadata;
}
else {
$this
->validateKey($key, __FUNCTION__);
$l_key = strtolower($key);
if (in_array($l_key, array_map('strtolower', $this
->getSupportedKeys()), TRUE)) {
return isset($this->metadata[$l_key]) ? $this->metadata[$l_key] : NULL;
}
return NULL;
}
}
protected function doSetMetadata($key, $value) {
throw new FileMetadataException('Changing font metadata is not supported', $this
->getPluginId());
}
protected function doRemoveMetadata($key) {
throw new FileMetadataException('Deleting font metadata is not supported', $this
->getPluginId());
}
}
Classes
Name |
Description |
Font |
FileMetadata plugin for TTF/OTF/WOFF font information. |