Este directorio contiene herramientas para la característica de espaciado contextual de medio ancho contextual para la tipografía japonesa/china/coreana.
Esta característica permite la tipografía descrita en JLREQ 3.1.2 Posicionamiento de los signos de puntuación (comas, períodos y soportes) forma básica de colocar signos de puntuación, paréntesis, etc. para japonés y clreq 3.1.6.1 Ajuste de puntuación Espacio de ajuste de código SpacePetappoint para chino. La siguiente es una cifra de JLREQ:
Una discusión temprana en el artículo del blog de tipo Adobe CJK y la Parte II pueden ayudar a comprender mejor la función.
Puede encontrar texto de muestra aquí. Esta página de muestra utiliza fuentes construidas con esta herramienta.
OpenType define 4 etiquetas de características para que las fuentes admitan esta función:
chws " y la etiqueta de la función " vchw " como su contraparte de flujo vertical.halt " y la etiqueta de la función " vhal " como su contraparte de flujo vertical.Se desean las 4 características, ya que cada característica se aplica en un contexto diferente.
Este paquete agrega estas características a cualquier fuente OpenType/TrueType cuando faltan, calculando las tablas de características a partir de datos como puntos de código Unicode y contornos de glifo.
Puede instalar esta herramienta por PIP o PIPX.
pipx install east-asian-spacingpip install east-asian-spacingTenga en cuenta que, si instala con PIP en el entorno global, sus dependencias pueden causar conflictos con otros paquetes. Si todo lo que necesita es la herramienta de línea de comandos, PIPX puede instalarla a nivel mundial mientras la aislan en un entorno virtual.
Consulte también la sección Instalar paquete si desea utilizar este paquete desde su programa Python, o la sección Clon e Instalar si desea diagnosticar fuentes o el código en más detalles.
El siguiente ejemplo agrega la función en input-font-file y la guarda en el directorio build .
east-asian-spacing -o build input-font-fileLa sección de pruebas tiene recursos para verificar las diferencias y las fuentes de prueba que construyó.
Para otras opciones y usos, la opción --help puede mostrar la lista completa de opciones.
El algoritmo es aplicable a cualquier fuente CJK. Las siguientes fuentes se prueban en cada versión:
Las fuentes CJK en Fonts.google.com se prueban en el paquete CHWS_TOOL. Varias otras fuentes también fueron probadas durante el desarrollo.
Al agregar las características a sus fuentes, el HTML de prueba es una herramienta útil para verificar los resultados. Si encuentra algún problema con sus fuentes, informe a los problemas.
Consulte también los temas avanzados a continuación si desea personalizar los comportamientos predeterminados para sus fuentes.
Cuando el archivo de fuente de entrada es una colección TrueType (TTC), esta herramienta agrega la función a todas las fuentes en el TTC de forma predeterminada.
Si desea agregar la función a solo algunas de las fuentes en el TTC, puede especificar una lista separada por comas de índices de fuentes. El siguiente ejemplo agrega la función al índice de fuentes 0 y 1, pero no a otras fuentes en el TTC.
east-asian-spacing --index=0,1 input-font-file.ttcPuede instalar este paquete utilizando sus herramientas de administración de paquetes favoritas, como poesía, pipenv o pip.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacingConsulte también la sección de clonos e instalar si desea diagnosticar fuentes o el código en más detalles.
El siguiente ejemplo crea una fuente con las características en el directorio " build " si las características son aplicables.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )Una página de prueba HTML está disponible para verificar el comportamiento de las fuentes en los navegadores.
Puede probar las fuentes que construyó localmente.
fonts " al comienzo del bloque <script> .Tenga en cuenta que cuando desea probar un TTC (colección TrueType) pero su navegador solo puede cargar la primera fuente en el TTC, el siguiente comando extrae todas las fuentes OpenType (.OTF o .TTF) desde un archivo de fuente de colección OpenType (.TTC o .OTC).
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc El subcompo dump puede crear varios tipos de archivos de volcado de texto.
El uso más simple es mostrar una lista de tablas. Esto es similar a la opción " -l " de TTX, excepto las colecciones TrueType (TTC), esta herramienta puede mostrar tablas de todas las fuentes en el TTC, junto con las cuales se comparten tablas con las que se comparten las fuentes.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc La opción " -o " crea archivos de lista de tabla en el directorio especificado:
east-asian-spacing dump -o build/dump build/ * .ttc La opción " --ttx " crea volcados de texto TTX de todas las tablas además de los archivos de la lista de tabla. Esto es similar a la opción " -s " de TTX, excepto que puede volcar todas las tablas en las colecciones TrueType (TTC).
east-asian-spacing dump -o build/dump --ttx build/ * .ttc El subcomcomprado dump también puede crear archivos de volcado de dos archivos de fuentes y compararlos. Esto ayuda a visualizar las diferencias en dos fuentes, específicamente, los archivos de fuentes que creó a partir de los archivos de fuentes originales.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc El ejemplo anterior calcula las diferencias entre source_fonts_dir/NotoSansCJK.ttc y build/NotoSansCJK.ttc creando siguientes 3 conjuntos de archivos:
build/NotoSansCJK.ttc en el directorio build/diff/dump .source_fonts_dir/NotoSansCJK.ttc en el directorio build/diff/src .build/diff .NOTA: La opción "
--diff" es más eficiente que hacer todo esto, especialmente para fuentes grandes, porque se omite crear TTX de tablas cuando son de igualdad binaria.
La opción -o es opcional. Cuando se omite, el submand emite el Diff a stdout .
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | lessPara crear archivos DIFF para todas las fuentes que construyó, puede abordar la salida a continuación:
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - La opción " -p " imprime las rutas de fuente de entrada y salida a stdout en el formato de valores separados por pestañas. El subcomcomprado dump con el argumento " - " lee esta lista de stdin y crea su volcado de texto y archivos Diff en el directorio build/diff . La opción " --diff " no es necesaria en este caso, porque las rutas de fuente de origen se proporcionan desde la tubería.
Una vez que revisó los archivos DIFF creados anteriormente, o las fuentes probadas que crea, puede copiar los archivos DIFF en el directorio references . Luego, cuando desee volver a construirlos, como cuando se actualizan las fuentes o cuando se cambia el entorno de compilación, puede comparar los archivos DIFF con los archivos de referencia para saber cómo las nuevas fuentes son diferentes de las construcciones anteriores.
Con la opción " -r ", el subcomtiguo dump crea archivos DIFF entre dos archivos de fuentes y compara los archivos DIFF con archivos DIFF una vez revisados en el directorio references .
El uso típico de esta opción es el siguiente:
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - Consulte la sección Diff para la opción " -p " y la tubería.
Los scripts build*.sh incluyen esta opción.
La forma de las formas de prueba de las cadenas de pruebas y verifica si el espacio contextual se aplica o no.
La opción --test establece el nivel de la prueba de forma.
east-asian-spacing --test 2 -v -o build input-font-fileEl nivel 0 deshabilita la prueba de forma. El nivel 1 ejecuta una prueba de humo usando un pequeño conjunto de muestras. El nivel 2 ejecuta la prueba de forma utilizando un gran conjunto de cadenas de prueba. El valor predeterminado es 1.
El algoritmo es el lenguaje agnóstico y es aplicable a cualquier fuente CJK.
Este paquete determina que los pares de glifos ajustan los espacios mediante un conjunto de puntos de código Unicode definidos en la clase Config .
Luego, para cada par, verifica si los espacios son aplicables examinando los contornos del glifo y la calculación de los cuadros de límites de tinta de los glifos. Por ejemplo, cuando los glifos son muy gruesos, los glifos pueden no tener suficientes espacios internos, y la aplicación de los espacios puede hacer que los glifos colisionen. Este paquete detecta automáticamente tales casos y evita aplicar espacios a tales pares.
Este comportamiento automático se puede deshabilitar especificando los idiomas a continuación, o configurando Config.use_ink_bounds en False en su programa Python.
Hay convenciones específicas del lenguaje para donde se colocan caracteres de puntuación en los espacios de glifo. Por ejemplo, se debe colocar una parada completa ideográfica U+3002 en la esquina de fondo izquierdo del espacio del glifo en japonés, mientras que debe colocarse en el centro en chino tradicional.
Por defecto, este paquete determina tales diferencias de los contornos del glifo como se describe en la sección de algoritmo anterior. Pero puede especificar la etiqueta OpenType Language System para dejar que este paquete siga la convención del idioma en lugar de usar los contornos de Glyph. El siguiente ejemplo deshabilita la determinación automática por esquemas de glifo, y especifica que la fuente es una fuente japonesa.
east-asian-spacing --language=JAN input-font-filePara las colecciones TrueType (TTC), la opción de idioma se aplica a todas las fuentes en el TTC de forma predeterminada. Cuando desea especificar diferentes idiomas a cada fuente en el TTC, acepta una lista separada por comas. El siguiente ejemplo especifica coreano para el índice 1 de fuentes, el chino simplificado para el índice de fuentes 2 y automático para todas las demás fuentes.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc Puede combinar estas dos opciones. El siguiente ejemplo se aplica JAN al índice 2, y ZHS al índice 3. Otras fuentes en el TTC no se cambian.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttcEs posible que desee ajustar qué pares de personajes deben ajustar los espacios, en casos como cuando sus fuentes pueden no tener espacios esperados para algunos personajes. Actualmente, esto es posible solo de los programas de Python.
Para obtener un ejemplo simple, consulte la función test_config en tests/config_test.py .
El proyecto CHWS_TOOL es un ejemplo real de personalización de este paquete.
Este paquete utiliza el motor de conformidad HarfBuzz mediante el uso de un binde de Cython Uharfbuzz.
Si desea utilizar una compilación específica de HarfBuzz, esta herramienta puede invocar la herramienta de línea de comandos de forma de HB externa en su lugar configurando la variable de entorno SHAPER .
export SHAPER=hb-shapePara instalar la forma de HB para Linux:
sudo apt get libharfbuzz-binPara instalar HB forma para Mac con Homebrew:
brew install harfbuzzLas instrucciones para otras plataformas pueden estar disponibles en Command-Not-Found.com.
Si es posible que necesite diagnosticar fuentes o el código, se recomienda la clonación e instalación con poesía:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shellEste método tiene las siguientes ventajas:
-e " o setuptools "Modo de desarrollo").También puede instalar el directorio clonado usando PIP si lo prefiere:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .Este repositorio contiene pruebas unitarias usando Pytest. Las pruebas unitarias cubren las funcionalidades básicas, incluidas las pruebas de forma, agregar la función a una fuente de prueba y compararla con referencias.
Si siguió la sección de clon e instalación, las herramientas para las pruebas unitarias ya están instaladas. Antes de ejecutarlos por primera vez, debe descargar fuentes para probar:
./tests/download_fonts.pyLuego puede ejecutar las pruebas por:
pytestO ejecutarlos con múltiples versiones de Python usando Tox:
tox El directorio scripts tiene algunos scripts de shell pequeños.
Los scripts build*.sh son útiles para construir fuentes, calcular la diferencia de las fuentes de origen y comparar los archivos DIFF con referencias. Los siguientes son usos de ejemplo.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v