Métricas para documentos portáteis
A tabela a seguir especifica as métricas de fonte mais importantes para aplicativos que exigem documentos portáteis e as funções que permitem que um aplicativo os recupere.
Função | Métrica | Uso |
---|---|---|
Enumfontfamilies | ntmSizeEM | Recuperação de métricas de design; conversão em métricas de dispositivo. |
GetCharABCWidths | ABCWidths | Posicionamento preciso de caracteres no início e no final das margens, limites de imagem e outras quebras de texto. |
GetCharWidth32 | AdvanceWidths | Posicionamento de caracteres em uma linha. |
GetOutlineTextMetrics | otmfsType | Bits de inserção de fonte. |
otmsCharSlopeRise | Componente Y para inclinação do cursor para fontes itálicas. | |
otmsCharSlopeRun | Componente X para inclinação do cursor para fontes itálicas. | |
otmAscent | Espaçamento entre linhas. | |
otmDescent | Espaçamento entre linhas. | |
otmLineGap | Espaçamento entre linhas. | |
otmpFamilyName | Identificação de fonte. | |
otmpStyleName | Identificação de fonte. | |
otmpFullName | Identificação de fonte (normalmente, nome da família e do estilo). |
Os membros otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent e otmLineGap da estrutura OUTLINETEXTMETRIC são dimensionados ou transformados para corresponder ao modo de dispositivo atual e à altura física (conforme especificado no membro tmHeight da estrutura NEWTEXTMETRIC ).
A identificação de fonte é importante nessas instâncias quando um aplicativo deve selecionar a mesma fonte, por exemplo, quando um documento é reaberto ou movido para um sistema operacional diferente. O mapeador de fontes sempre seleciona a fonte correta quando um aplicativo solicita uma fonte por nome completo. Os nomes de família e estilo fornecem entrada para a caixa de diálogo de fonte padrão, o que garante que as barras de seleção sejam colocadas corretamente.
Os valores otmsCharSlopeRise e otmsCharSlopeRun são usados para produzir uma aproximação próxima da main ângulo itálico da fonte. Para fontes romanas típicas, otmsCharSlopeRise é 1 e otmsCharSlopeRun é 0. Para fontes itálicas, os valores tentam aproximar o seno e o cosseno do main ângulo itálico da fonte (em graus no sentido anti-horário passados verticais); observe que o ângulo itálico para fontes vertical é 0. Como esses valores não são expressos em unidades de design, eles não devem ser convertidos em unidades de dispositivo.
As métricas de posicionamento de caracteres e espaçamento entre linhas permitem que um aplicativo compute quebras de linha independentes do dispositivo que são portáteis entre telas, impressoras, typesetters e até mesmo plataformas.
Para executar o layout de página independente do dispositivo
- Normalizar todas as métricas de design para um valor comum de UHR (ultra-alta resolução) (por exemplo, 65.536 DPI); isso impede erros de arredondamento.
- Quebras de linha de computação com base em métricas UHR e largura de página física; isso gera um ponto de partida e um ponto final de uma linha dentro do fluxo de texto.
- Compute a largura da página do dispositivo em unidades de dispositivo (por exemplo, pixels).
- Ajuste cada linha de texto na largura da página do dispositivo, usando as quebras de linha computadas na etapa 2.
- Computar quebras de página usando métricas UHR e o comprimento da página física; isso gera o número de linhas por página.
- Compute as alturas de linha em unidades de dispositivo.
- Ajuste as linhas de texto na página, usando as linhas por página da etapa 5 e as alturas de linha da etapa 6.
Se todos os aplicativos adotarem essas técnicas, os desenvolvedores poderão praticamente garantir que os documentos movidos de um aplicativo para outro manterão sua aparência e formato originais.