FreeType - FreeType

FreeType
Logotipo de Freetype new.svg
Desarrollador (es) David Turner, Robert Wilhelm, Werner Lemberg y colaboradores de FreeType
Versión inicial 1996 ; Hace 25 años ( 1996 )
Lanzamiento estable
2.11 / 19 de julio de 2021 ; Hace 2 meses ( 07/19/2021 )
Repositorio
Escrito en C
Sistema operativo Multiplataforma
Escribe Biblioteca de desarrollo de software : rasterización de fuentes
Licencia Licencia pública general GNU / Licencia FreeType
Sitio web www .freetype .org
Una e minúscula
Una minúscula es
Una minúscula w
Subpíxeles minúsculas e , is y w renderizados con FreeType

FreeType es una biblioteca de desarrollo de software popular que se utiliza para representar texto en mapas de bits y proporciona soporte para otras operaciones relacionadas con fuentes. El motor de rasterización de fuentes FreeType es un software gratuito y de código abierto con el código fuente con doble licencia bajo una licencia similar a BSD y la GPL . FreeType admite varios formatos de fuente, incluidos TrueType , Type 1 y OpenType y "está diseñado para ser pequeño, eficiente, altamente personalizable y portátil, al tiempo que es capaz de producir resultados de alta calidad (imágenes de glifos)".

Características

La capacidad para acceder a la información de restricción de incrustación y subconjunto de fuentes se agregó en 2.3.8.

Reticente

En 2.3.0 se agregó soporte para aplicar un filtro especial a mapas de bits generados por 'FT_Render_Glyph' si se ha seleccionado uno de FT_RENDER_MODE_LCD y FT_RENDER_MODE_LCD_V, mientras que la representación optimizada para LCD se deshabilitó en todas las compilaciones predeterminadas de la biblioteca. El filtro LCD se normalizó y equilibró el color en 2.6.2. El método de sugerencia 'Harmony', que replica el resultado de la sugerencia de subpíxeles ClearType con un filtro ligero de 3 toques sin utilizar técnicas ClearType, se convirtió en el método de sugerencia de subpíxeles predeterminado en 2.8.1. Dado que las patentes relacionadas con ClearType expiraron, ClearType está disponible para su uso en 2.10.3.

Tipo verdadero
El intérprete de código de bytes TrueType se desactivó en 2.0 Beta 8, y luego se desactivó nuevamente en 2.0.2. El intérprete de código de bytes TrueType se ha corregido para producir exactamente la misma salida que FreeType 1.x en 2.1.0. La sugerencia no patentada se convirtió por defecto en 2.3.0, que detecta la necesidad de la sugerencia por nombre de fuente. La capacidad para detectar instrucciones de código de bytes patentadas y alternar entre referencias no patentadas se agregaron en 2.3.5. El intérprete de código de bytes TrueType está habilitado de forma predeterminada en 2.4.0. La compatibilidad con sugerencias de subpíxeles TrueType se implementa en 2.4.11. El modo de sugerencia de subpíxeles en la versión 40 del motor de código de bytes se agregó en 2.6.4, se deshabilitó en 2.6.5 y luego se habilitó de forma predeterminada en 2.7. El operador de código de bytes 'GETVARIATION' se implementó en 2.7.
Posdata
La sugerencia de PostScript se eliminó en 2.0.5. Se introdujo una nueva sugerencia PostScript en 2.0.6 para admitir sugerencias nativas en PostScript Type 1, PostScript CID y CFF / CEF. El motor de sugerencias se actualizó en 2.1.3. El nuevo motor de análisis y sugerencias CFF de Dave Arnold se introdujo en 2.4.12. 2.5.0.1 habilita esto por defecto. El motor CFF antiguo estaba deshabilitado de forma predeterminada. El oscurecimiento del tallo CFF se puede configurar a través de la propiedad 'darkening-parameters'. El comportamiento de oscurecimiento del tallo CFF se volvió configurable en el momento de la compilación en 2.5.4. El operador CFF 'aleatorio' se admite en 2.8, completando el soporte de todos los códigos de operación CFF. La capacidad de controlar la generación de números pseudoaleatorios para el operador 'aleatorio' se agregó en 2.8. La compatibilidad con la fuente Type 1 con el motor Adobe CFF se agregó en 2.9. A partir de 2.9, los nombres de PostScript para instancias con nombre en una fuente de variación se cambian a un nombre de PostScript derivado algorítmicamente de forma predeterminada, a menos que la instancia con nombre se establezca con 'FT_Set_Named_Instance' y la fuente tenga las entradas correspondientes en su tabla 'fvar'.
Auto-hinter
Se agregó un nuevo módulo de sugerencias automáticas en 2.0 Beta 8. El motor de sugerencias se actualizó en 2.1.3. En 2.1.8, la sugerencia automática está deshabilitada para glifos que están distorsionados verticalmente o reflejados. Auto-hinter fue reemplazado por auto-fitter en FreeType 2.1.10. Se introdujo un nuevo algoritmo para fuentes CJK en FreeType 2.2, basado en el parche de Akito Hirai. Solo funciona para fuentes con un mapa de caracteres Unicode. En 2.3.2 se introdujo un soporte mejorado para las serifas, los casos de las esquinas y los ajustes de espaciado. Al calcular las zonas azules, los contornos de un solo punto se ignoran en 2.3.3. En 2.3.5, la sugerencia predeterminada para los scripts no latinos se cambió al módulo de sugerencias CJK. En 2.4.5, si las sugerencias automáticas no están explícitamente deshabilitadas, se usa Auto-hinter si una fuente basada en TrueType no contiene sugerencias nativas. En 2.5.1, se mejoró el renderizado Auto-hinter para fuentes TrueType, especialmente en el rango de 20 a 40 ppem. Se agregó compatibilidad con la biblioteca HarfBuzz 0.9.19 o más reciente en 2.5.3. Las sugerencias automáticas se agregaron a los scripts de Devanagari y Telugu (experimentales) en 2.5.4. Se agregaron sugerencias automáticas a las escrituras árabe y tailandesa en 2.6. Se agregaron sugerencias automáticas a la escritura laosiana, y la compatibilidad con la escritura árabe se mejoró en 2.6.1. El oscurecimiento del tallo se agregó en 2.6.2 pero está deshabilitado de forma predeterminada. Se agregaron sugerencias automáticas a las escrituras armenio, cheroqui, etíope, georgiano, gujarati, gurmukhi, malayalam, cingalés y tamil en 2.6.4. Se agregaron sugerencias automáticas a Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Chipriota, Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanés, tai-vietnamita, tifinagh, sílabas canadienses unificadas, Vai en 2.8. Se desactivó el modo de sugerencias automáticas 'Light' usando métricas TrueType para fuentes TrueType de forma predeterminada en 2.8. Se agregó un modo para mostrar sugerencias automáticas de luz con posicionamiento de subpíxeles a 'ftdiff' en 2.8. En 2.9.1, los rangos de scripts de auto-hinter se actualizaron para Unicode 11, con nuevos scripts para georgiano Mtavruli.

Formatos de archivo

Captura de pantalla de las ventanas de configuración de MacType, una interfaz de FreeType

El nuevo formato SING Glyphlet de Adobe se introdujo en FreeType 2.2.

BDF
La compatibilidad con el formato BDF se agregó en 2.1.1, que incluye compatibilidad con mapas de bits suavizados. Se agregó soporte para recuperar propiedades BDF en 2.1.4-rc1. Se agregó compatibilidad con las propiedades SETWIDTH_NAME y ADD_STYLE_NAME en 2.1.8. En 2.1.9, la propiedad DEFAULT_CHAR (si está disponible) se usa para seleccionar una forma de glifo para el glifo no definido. En 2.1.10, FT_Set_Pixel_Sizes y FT_Set_Char_Size se cambiaron para seleccionar las dimensiones reales de la fuente y el tamaño 'nominal' respectivamente, ignorando el parámetro de ancho; El controlador BDF ya no convierte todos los mapas de bits devueltos con una profundidad de 2bpp o 4bpp a una profundidad de 8bpp. La compatibilidad con todo el rango de codificación Unicode se agregó en 2.4.9. La capacidad de utilizar los valores de la palabra clave 'SIZE' para procesar fuentes sin las propiedades 'POINT_SIZE', 'RESOLUTION_X' o 'RESOLUTION_Y' se agregó en 2.8.1.
PCF
En 2.1.3 se agregó soporte nativo de archivos de fuentes comprimidos con gzip. Se agregó soporte para recuperar propiedades PCF en 2.1.4-rc1. En 2.2.8, se agregó compatibilidad con las propiedades SETWIDTH_NAME y ADD_STYLE_NAME, y las fuentes de mapa de bits comprimidas con el algoritmo LZW. En 2.1.10, FT_Set_Pixel_Sizes y FT_Set_Char_Size se cambiaron para seleccionar las dimensiones reales de la fuente y el tamaño 'nominal' respectivamente, ignorando el parámetro de ancho. Se agregó soporte para mostrar más apellidos 'coloridos' en 2.7.1, con la función hecha opcional en 2.8.
Recurso de fuentes portátiles (PFR)
Los mapas de bits incrustados son compatibles y devuelven métricas de kerning correctas para todos los glifos en 2.1.3. La capacidad de devolver la familia de fuentes y los nombres de estilo cuando están disponibles se agregó en 2.1.4-rc2.
Posdata
Los controladores CID y CFF / Type2 / CEF se agregaron en 2.0 Beta 8. Se agregó soporte mejorado para fuentes sintéticas (transformadas) en 2.0.2. El controlador de fuente Type 42 se agregó en 2.1.1. La compatibilidad con fuentes CFF que contienen un subconjunto de su juego de caracteres de referencia se agregó en 2.1.4-rc1. En 2.1.8, se agregó soporte de formato hexadecimal de datos después del comando 'StartData' en fuentes tipo 1 con clave CID, y mapas de bits incrustados en fuentes CFF basadas en SFNT. El acceso al suplemento de pedido de registro CID se agregó en 2.3.6. Acceda a fuentes CFF con clave CID a través de valores CID a través de 'FT_Get_CID_Is_Internally_CID_keyed' y 'FT_Get_CID_From_Glyph_Index' se agregaron en 2.3.9. La recuperación de claves de diccionario en fuentes Type 1 a través de la nueva API 'FT_Get_PS_Font_Value' se agregó en 2.4.8. El motor CFF admite todos los operadores de Tipo 2, excepto "aleatorio" en 2.6.3. La compatibilidad con el kerning de pistas para el archivo AFM se agrega en FreeType 2.2.
TrueType / OpenType
La compatibilidad con los formatos OpenType 1.3 8, 10, 12 se agregó en 2.0.5. La compatibilidad con fuentes TrueType u OpenType incrustadas en documentos PDF sin 'cmap', 'publicación' y 'nombre' se agregó en 2.0.8. La compatibilidad con fuentes con tablas de nombres rotas con entradas no válidas y desplazamientos salvajes se agregó en 2.0.9. Admite determinadas fuentes "rotas" que se cargan en Windows sin problemas en 2.1.3. La compatibilidad con tablas TrueType sin una tabla 'hmtx' cuando se usa la interfaz incremental se agregó en 2.1.4-rc1, y la profundidad de los glifos compuestos es limitada. En 2.1.9 se agregó soporte para las tablas 'avar', 'cvar', 'fvar' y 'gvar'. La configuración de la familia y el estilo en las fuentes SFNT se maneja mediante las cadenas TT_NAME_ID_PREFERRED_FAMILY y TT_NAME_ID_PREFERRED_SUBFAMILY en 2.1.10. En 2.1.10, se agregó la API FT_Sfnt_Table_Info para recuperar la información de nombre y tamaño de las tablas SFNT, y se agregó la API FT_OpenType_Validate para validar las tablas OpenType (BASE, GDEF, GPOS, GSUB, JSTF). El bit 1 en la tabla 'head' de fuentes TrueType es compatible con FreeType 2.2. La compatibilidad con la carga de nombres TrueType codificados en UTF-16 se agregó en 2.3.0, y el validador TrueTypeGX (gxvalid) comenzó a verificar el orden de los ID de glifos en la tabla de kern. Los cmaps de Microsoft Unicode en fuentes TrueType se convirtieron en los preferidos sobre los cmaps de Apple de forma predeterminada en 2.3.6. La validación de la tabla OpenType 'MATH' y la compatibilidad con cmap 14 se agregaron en 2.3.6. La capacidad de pasar el modo de abandono al rasterizador en blanco y negro se agregó en 2.3.7. Las fuentes experimentales Type 1 y Type 1 con clave CID en un contenedor SFNT se agregaron en 2.3.8 (las tablas 'TYP1' y 'CID' se pasan a los controladores de fuentes PS Type 1 y PS con clave CID). La compatibilidad con el formato de tabla SFNT cmap 13 se agregó en 2.3.10. La compatibilidad con fuentes TrueType sin apellido mediante la detección de longitudes y sumas de comprobación de subtablas persistentes de Type42 ('cvt', 'fpgm' y 'prep') se agregó en 2.4.4, así como la compatibilidad adecuada de UVS (TrueType / OpenType formato cmap 14). El soporte para colecciones OpenType y fuentes CFF dentro de un contenedor SFNT se agrega en 2.4.11. El soporte de 'CBDT', las tablas 'CBLC' (mapas de bits de colores incrustados) se agregaron en 2.5.0. La compatibilidad con el formato de mapa de bits de color 'sbix' de Apple y la versión 5 de la tabla SFNT 'OS / 2' se agregaron en 2.5.1. En 2.6, los anchos de avance y los valores de cojinete lateral en CFF (envueltos en una estructura SFNT) ahora siempre se toman de la tabla 'hmtx', y el nombre de fuente PostScript de una fuente CFF (envuelto en una estructura SFNT) ahora siempre se toma de la tabla 'nombre'. La compatibilidad con el formato de fuente CFF2 de OpenType 1.8 se agregó en 2.7.1. Soporte para tablas 'VVAR' y 'MVAR' (también habilitado el soporte de fuentes de variación OpenType), tabla 'Formato 1' SFNT 'nombre', OpenType versión 1.8.1 se agregaron en 2.8. La capacidad de acceder al campo 'banderas' de un eje de variación, sintetizando un cmap Unicode faltante para fuentes TrueType si hay nombres de glifos disponibles, se agregó en 2.8.1.
Fuente de trama de Windows (.FON)
El controlador Windows FNT / FON se agregó en 2.0 Beta 8. La API específica de Windows FNT se agregó en 2.1.4-rc1. La compatibilidad con archivos de fuentes ráster de Windows en formato ejecutable PE se agregó en 2.3.5.
WOFF
La compatibilidad con el formato de fuente WOFF se agregó en 2.5.1.

Cargador

El cargador de tablas de nombres TrueType admite fuentes asiáticas 'con errores' que se agregaron en 2.1.1, que ignoran las entradas de nombres vacías, las compensaciones de puntero no válidas y algunas otras sutilezas incorrectas. Además, las cadenas de nombres ahora se cargan a pedido, lo que reduce la carga de memoria de muchas caras. La compatibilidad con la gestión de códigos de caracteres UCS-4 en la caché de CMap se agregó en 2.1.4-rc2. En 2.1.8, compatibilidad con la desinstalación de caras, elimine todos los nodos 'inactivos' que corresponden a un FTC_FaceID determinado. En el cargador de Tipo 1, los diccionarios de nivel superior se omitieron correctamente en 2.3.0 La capacidad para usar tamaños de píxeles fraccionarios en la caché se agregó en 2.3.5. La capacidad de extraer valores avanzados de glifos sin cargar sus contornos se agregó en 2.3.8. La carga incremental de fuentes está habilitada de forma predeterminada en 2.3.12.

Plataformas

AIX
La compilación automática en sistemas AIX se agregó en 2.0.4.
Amiga
Se agregó soporte para Amiga en 2.0.5.
BeOS
Los archivos específicos de BeOS se agregaron en 2.0.3.
Atari
En 2.1.8 se agregó soporte para construir FreeType en Atari de 16 bits usando el compilador PureC.
EPOC
El soporte para EPOC se volvió a agregar en 2.0.2.
Symbian
Se agregó soporte para Symbian en 2.3.6.
Ventanas
La compatibilidad con el controlador PFR con Visual C ++ se agregó en 2.1.2.

Licencia

  • En 2.1.0, la licencia FreeType se actualizó para incluir un descargo de responsabilidad preferido propuesto.
  • ftvalid sources, utilizado por el código ftlayout, se volvió a otorgar a la licencia MIT 'Old-Style' en 2008-01-03.

Historia

El trabajo en el motor de renderizado FreeType fue iniciado en 1995 por David Turner con la intención de proporcionar soporte de fuentes TrueType para el sistema operativo OS / 2 , incluido un intérprete para manejar el código de bytes TrueType. Originalmente escrito en el lenguaje de programación Pascal , fue portado en 1997 por Robert Wilhelm a C. Más tarde, Werner Lemberg se unió al equipo que es hasta hoy mantenedor de Freetype.

FreeType 1 solo tenía soporte para el formato de fuente TrueType, pero incluía una extensión para admitir las funciones de diseño de texto OpenType .

Reescritura importante 2.0

La versión 2.0 de FreeType se anunció en 1998, con la versión de desarrollo disponible en 1999 y la versión final disponible en 2000, lo que proporciona una reescritura completa para hacerlo modular. FreeType 2 trajo soporte para más formatos de fuente y código fuente evolucionado que los desarrolladores declararon que era "más simple y más poderoso". FreeType 2 no es compatible con versiones anteriores de FreeType 1, pero los desarrolladores afirman que pasar de FreeType 1 a FreeType 2 presenta poca dificultad. Como el procesamiento de disposición del texto que no era un objetivo de FreeType 2, sin embargo, la funcionalidad de la disposición del texto OpenType de FreeType 1 se eliminó en FreeType 2. Una forma muy evolucionado de la funcionalidad de la disposición del texto OpenType de FreeType 1 se utiliza en el Pango biblioteca disposición del texto. El proyecto HarfBuzz está evolucionando aún más esa funcionalidad con una reescritura completa que se ofrece como una biblioteca independiente con una licencia menos restrictiva que la licencia de Pango.

Conflictos de patentes

En 1999, Apple Incorporated informó al proyecto Freetype de que FreeType estaba infringiendo patentes relacionadas con la sugerencia de fuentes TrueType . Después de eso, Freetype se desactivó por defecto o trabajó en tecnologías relacionadas con patentes. Por lo tanto, varios proyectos de código abierto, como FreeBSD o Linux , tenían FreeType incluido con la funcionalidad de sugerencia de fuentes desactivada o degradada para evitar el problema de las patentes de software en poder de Apple Inc.

Desde mayo de 2010, todas las patentes de software en conflicto relacionadas con la sugerencia de fuentes expiraron, lo que permite que la sugerencia de fuentes TrueType de FreeType se utilice en código abierto. Muchos de los sistemas operativos que deshabilitaron el renderizador ahora le dan al usuario la opción de habilitarlo. En Fedora, freetype-freeworld se cambió del repositorio propietario de yum al repositorio gratuito.

Desde agosto de 2019, todas las patentes de software en conflicto relacionadas con el filtrado de color ClearType expiraron, lo que permite a FreeType utilizar el método de filtrado de color ClearType en 2.10.3.

Donación de motores CFF

En 2013, Adobe donó un motor de renderizado CFF al proyecto FreeType que lo integró y lo estableció por defecto con la versión 2.5.

Usuarios

Androide
FreeType se utiliza como renderizador de fuentes en Android.
manzana
Apple usa FreeType en iOS y macOS junto a Apple Advanced Typography .
Java
En 2007, Sun Microsystems pasó de utilizar un rasterizador de fuentes patentado a utilizar FreeType en el kit de desarrollo OpenJDK Java.
Estación de juegos
Sony envía FreeType con sus consolas PlayStation 3 , PlayStation 4 y PlayStation Vita .
ReactOS
FreeType se utiliza como renderizador de fuentes ReactOS.

Otros usuarios

Además de ser utilizado por los principales sistemas de escritorio de software libre, FreeType se ha utilizado como motor de rasterización para videojuegos modernos y Opera para Wii .

En Windows , proyectos como gdipp y MacType tienen como objetivo anular el renderizador del sistema con FreeType.

Ver también

  • HarfBuzz , una biblioteca para dar forma a texto Unicode
  • Pango , un motor de renderizado de texto multilingüe
  • FontForge , un programa editor de tipografía (fuente)

Referencias

enlaces externos