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
|
|
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.
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.
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.
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.
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.
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.
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.
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:
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.