You are here

function _textimage_font_name in Textimage 6.2

Same name and namespace in other branches
  1. 5.2 textimage_admin.inc \_textimage_font_name()
  2. 7.2 textimage.admin.inc \_textimage_font_name()
2 calls to _textimage_font_name()
textimage_preset_list in ./textimage_admin.inc
_textimage_font_list in ./textimage_admin.inc
Returns an array of files with .otf/.ttf extensions in the specified directory.

File

./textimage_admin.inc, line 762

Code

function _textimage_font_name($filename) {
  $fd = fopen($filename, "r");
  $text = fread($fd, filesize($filename));
  fclose($fd);
  $number_of_tabs = _textimage_dec2hex(ord($text[4])) . _textimage_dec2hex(ord($text[5]));
  for ($i = 0; $i < hexdec($number_of_tabs); $i++) {
    $tag = $text[12 + $i * 16] . $text[12 + $i * 16 + 1] . $text[12 + $i * 16 + 2] . $text[12 + $i * 16 + 3];
    if ($tag == "name") {
      $offset_name_table_hex = _textimage_dec2hex(ord($text[12 + $i * 16 + 8])) . _textimage_dec2hex(ord($text[12 + $i * 16 + 8 + 1])) . _textimage_dec2hex(ord($text[12 + $i * 16 + 8 + 2])) . _textimage_dec2hex(ord($text[12 + $i * 16 + 8 + 3]));
      $offset_name_table_dec = hexdec($offset_name_table_hex);
      $offset_storage_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 4])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 5]));
      $offset_storage_dec = hexdec($offset_storage_hex);
      $number_name_records_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 2])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 3]));
      $number_name_records_dec = hexdec($number_name_records_hex);
      break;
    }
  }
  $storage_dec = $offset_storage_dec + $offset_name_table_dec;
  $storage_hex = drupal_strtoupper(dechex($storage_dec));
  $font = array(
    'copyright' => '',
    'family' => '',
    'subfamily' => '',
    'name' => '',
  );
  for ($j = 0; $j < $number_name_records_dec; $j++) {
    $platform_id_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 0])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 1]));
    $platform_id_dec = hexdec($platform_id_hex);
    $name_id_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 6])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 7]));
    $name_id_dec = hexdec($name_id_hex);
    $string_length_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 8])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 9]));
    $string_length_dec = hexdec($string_length_hex);
    $string_offset_hex = _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 10])) . _textimage_dec2hex(ord($text[$offset_name_table_dec + 6 + $j * 12 + 11]));
    $string_offset_dec = hexdec($string_offset_hex);
    if ($name_id_dec == 0 && empty($font['copyright'])) {
      for ($l = 0; $l < $string_length_dec; $l++) {
        if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
          $font['copyright'] .= $text[$storage_dec + $string_offset_dec + $l];
        }
      }
    }
    if ($name_id_dec == 1 && empty($font['family'])) {
      for ($l = 0; $l < $string_length_dec; $l++) {
        if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
          $font['family'] .= $text[$storage_dec + $string_offset_dec + $l];
        }
      }
    }
    if ($name_id_dec == 2 && empty($font['subfamily'])) {
      for ($l = 0; $l < $string_length_dec; $l++) {
        if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
          $font['subfamily'] .= $text[$storage_dec + $string_offset_dec + $l];
        }
      }
    }
    if ($name_id_dec == 4 && empty($font['name'])) {
      for ($l = 0; $l < $string_length_dec; $l++) {
        if (ord($text[$storage_dec + $string_offset_dec + $l]) >= 32) {
          $font['name'] .= $text[$storage_dec + $string_offset_dec + $l];
        }
      }
    }
    if ($font['copyright'] != "" && $font['family'] != "" && $font['subfamily'] != "" && $font['name'] != "") {
      break;
    }
  }
  return $font;
}