Extraiga información clave de archivos de fuentes TrueType

  Este artículo toma como ejemplo la extracción de la revisión fontRevision en las propiedades del módulo principal.
Artículo de referencia para las propiedades relacionadas de los archivos de fuentes TrueType: intérprete de fuentes TrueType dirección de descarga del código fuente opentype.js: código fuente opentype.js

Figura 1: TrueType
Figura 2: tipo abierto

  Las fuentes TrueType generalmente están contenidas en un solo archivo de fuente TrueType con el sufijo .TTF.
  Una fuente OpenType es un archivo similar a una fuente TrueType, su formato está codificado como una fuente POSTSCRIPT y el sufijo es .OTF.

1. Análisis de la demanda

  Necesitamos extraer los parámetros fijos entre muchos parámetros: versión de revisión, y asegurarnos de que la versión de revisión esté en el atributo principal. En este momento, necesitamos ver cómo Font Inspector divide cada módulo de atributo, y encontrar nuestro atributo principal, y luego, en el módulo de atributo principal, extraiga la revisión del parámetro fontRevision.
  En primer lugar, creamos clases con varios campos de atributos. Cada clase contiene muchos parámetros, como el encabezado, el nombre, etc. son objetos de clase, y las versiones, fontRevision, etc. son atributos variables en la clase.

2. Leer el archivo

  Lea el archivo, lea el archivo binario, cárguelo en una matriz y páselo como parámetro a la interfaz posterior.
  Lea los primeros x bits del archivo y lea el bit de identificación como el tipo de archivo de acuerdo con las características de los diferentes tipos de archivos para obtener el tipo de archivo actual.
inserte la descripción de la imagen aquí
  Los diferentes tipos de archivos pueden tener diferentes módulos de atributos y listas de campos.Tomemos el archivo ttf como ejemplo, que contiene los siguientes campos de atributos de clase, y luego hay varias variables bajo estos diferentes atributos de clase.
inserte la descripción de la imagen aquí

3. Ver atributos relacionados con la cabeza

  Tomemos Head como ejemplo, hay muchos parámetros variables bajo esta clase, y estos parámetros tienen tipos de datos predeterminados y valores predeterminados.
inserte la descripción de la imagen aquí

4. Vea cómo Font Inspector divide cada módulo de atributo

  Nuestro TrueType es un archivo de fuente. Este archivo de fuente tiene una característica. Todos los módulos de atributos en su tabla de fuentes son de 4 caracteres, como se muestra en la figura: Para la cabeza que buscamos, la marcamos con una línea continua roja.
inserte la descripción de la imagen aquí
  Ahora, ¿cómo debemos dividir cada campo de atributo? ¿Y cómo separar el atributo de campo principal de estas tablas de fuentes? A través de la interfaz getTag(), esta interfaz es para recuperar la etiqueta de 4 caracteres de la vista DataView. Es decir, se devuelven los 4 caracteres correspondientes al atributo de campo.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
  Hasta ahora hemos encontrado el campo de atributo principal. El campo de atributo principal está en el desplazamiento inicial 300 de todo el archivo binario, y la longitud es 54. Hemos obtenido información válida. Lo siguiente que debe hacer es extraer el atributo fontRevision del encabezado. En este momento, lea directamente desde el desplazamiento real 300, lea un número fijo de bytes cada vez y encuentre el objetivo que se leerá.
  Construimos una estructura de vista relacionada en el encabezado, que contiene múltiples parámetros de atributos, y los parámetros que queremos extraer también están marcados con ojos rojos.
inserte la descripción de la imagen aquí
  Extraemos el parámetro fontRevision en la estructura headTable, y pasamos los datos y el inicio del desplazamiento inicial del encabezado en relación con el archivo binario a la interfaz como parámetros, y luego el nuevo objeto Parser, pasa los datos y los guarda en la forma de un objeto.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
  De hecho, es equivalente a crear una vista, que tiene datos de datos, desplazamiento inicial de desplazamiento y desplazamiento relativo de desplazamiento actual. La estructura de HeadTable es como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí
  A continuación, usamos el desplazamiento actual para leer uno por uno. Además del campo de parámetro en el encabezado, también especifica el tipo del campo de parámetro, que determina su desplazamiento en el campo actual Usamos la interfaz parseFixed (), de acuerdo con el tipo de cada campo de parámetro, incrementa continuamente el desplazamiento relativo actual hasta que se lee el parámetro fontRevision, y luego usa la función de ronda en la biblioteca matemática para redondear y truncar los datos.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43202123/article/details/125479078
Recomendado
Clasificación