Há pouco tempo vi com interesse o Jetendard (JetBrains Mono Nerd Font + Pretendard) que apareceu por aqui. Normalmente, esse tipo de fonte composta era usado aceitando a combinação escolhida por quem a criou. Mas acho que também há pessoas que querem montar sua própria combinação, como fonte A para inglês e fonte B para coreano. Por isso criei uma ferramenta para que qualquer pessoa possa fazer isso diretamente por uma GUI.
Combinar duas fontes pela CLI, por si só, não é difícil. Com fontTools, dá para fazer rapidamente. O incômodo vem depois: mudar opções, combinar de novo, instalar e conferir. Cada volta desse ciclo leva alguns minutos e ainda é preciso configurar a fonte na IDE, então fica bem trabalhoso. font-moeum é um app desktop focado em reduzir esse loop para alguns segundos. Ele recebe exatamente duas fontes, uma em inglês e uma em coreano (TTF/OTF), e as combina em um único TTF.
Quando a mesclagem termina, o resultado é carregado imediatamente, e você pode digitar diretamente na área de pré-visualização sem instalar. Tamanho e altura de linha são ajustados em tempo real via CSS, sem nova mesclagem. Ao mudar uma opção, ele recompõe automaticamente. Para glifos presentes em ambas, como latim, números e pontuação, dá para alternar com um clique por troca A/B de qual fonte eles serão trazidos, facilitando a comparação.
Há dois modos.
O modo normal faz a mesclagem completa com o fontTools Merger e mantém o coreano na proporção original, sendo adequado para documentos e UI.
O modo de fonte para programação usa um motor próprio que toma a fonte monoespaçada A como base e copia os glifos coreanos da B após escaloná-los e centralizá-los em células com largura em múltiplos inteiros da largura latina (padrão 2:1). Assim, em terminais e editores, duas células latinas e um caractere coreano se alinham exatamente. Escala do coreano, multiplicador de largura, deslocamento vertical, inclusão de hanja e combinação de jamo (ccmp) podem ser ajustados no painel avançado. Se A não for monoespaçada, a mesclagem é recusada.
A implementação é em Tauri v2 + React. O motor de mesclagem usa Python fontTools empacotado pelo PyInstaller em um executável único e embutido como sidecar. A mesclagem usa o fontTools diretamente. Para mostrar o resultado imediatamente, a API FontFace do webview era conveniente, o que levou a essa arquitetura. OTF (CFF) é convertido para TTF com cu2qu no carregamento e depois combinado. Como há aproximação de curvas e perda de hinting CFF, isso é indicado no slot com um badge "OTF→TTF", e OTF variável CFF2 é recusado. A saída é sempre TTF.
Disponibilizei builds para Windows (instalador e zip portátil), macOS (Apple Silicon) e Linux (AppImage/deb). Como não há assinatura de código, no Windows aparece um aviso do SmartScreen, e no macOS, por não haver notarização, é preciso executar xattr -cr uma vez. O app não inclui fontes.
Cumprir as licenças das fontes a serem mescladas é responsabilidade do usuário (Reserved Font Name da OFL não pode ser reutilizado no nome de saída).
A licença é MIT. Como combinação de exemplo, uso D2Coding + JetBrains Mono (OFL). Se encontrarem fontes que não mesclam ou combinações que ficam estranhas, agradeço se avisarem por issue.
Ainda não há comentários.