Metriche per documenti portatili
Nella tabella seguente vengono specificate le metriche di carattere più importanti per le applicazioni che richiedono documenti portatili e le funzioni che consentono a un'applicazione di recuperarle.
Funzione | Metrica | Uso |
---|---|---|
EnumFontFamilies | ntmSizeEM | Recupero delle metriche di progettazione; conversione in metriche del dispositivo. |
GetCharABCWidths | ABCWidths | Posizionamento accurato dei caratteri all'inizio e alla fine dei margini, limiti dell'immagine e altre interruzioni di testo. |
GetCharWidth32 | AdvanceWidths | Posizionamento di caratteri su una riga. |
GetOutlineTextMetrics | otmfsType | Bit di incorporamento dei tipi di carattere. |
otmsCharSlopeRise | Componente Y per la pendenza del cursore per i tipi di carattere corsivo. | |
otmsCharSlopeRun | Componente X per la pendenza del cursore per i tipi di carattere corsivo. | |
otmAscent | Interlinea. | |
otmDescent | Interlinea. | |
otmLineGap | Interlinea. | |
otmpFamilyName | Identificazione del tipo di carattere. | |
otmpStyleName | Identificazione del tipo di carattere. | |
otmpFullName | Identificazione dei caratteri (in genere, nome di famiglia e stile). |
I membri otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent e otmLineGap della struttura OUTLINETEXTMETRIC vengono ridimensionati o trasformati per corrispondere alla modalità del dispositivo corrente e all'altezza fisica corrente, come specificato nel membro tmHeight della struttura NEWTEXTMETRIC .
L'identificazione dei caratteri è importante in tali istanze quando un'applicazione deve selezionare lo stesso tipo di carattere, ad esempio quando un documento viene riaperto o spostato in un sistema operativo diverso. Il mapper del tipo di carattere seleziona sempre il tipo di carattere corretto quando un'applicazione richiede un carattere in base al nome completo. I nomi di famiglia e stile forniscono input alla finestra di dialogo tipo di carattere standard, che garantisce che le barre di selezione siano posizionate correttamente.
I valori otmsCharSlopeRise e otmsCharSlopeRun vengono usati per produrre un'approssimazione vicina dell'angolo corsivo principale del tipo di carattere. Per i tipi di carattere romano tipici, otmsCharSlopeRise è 1 e otmsCharSlopeRun è 0. Per i tipi di carattere corsivo, i valori tentano di approssimare il sine e il cosine dell'angolo corsivo principale del tipo di carattere (in gradi antiorario passato verticale); si noti che l'angolo corsivo per i tipi di carattere verticale è 0. Poiché questi valori non sono espressi nelle unità di progettazione, non devono essere convertiti in unità dispositivo.
Le metriche di posizionamento e spaziatura dei caratteri consentono a un'applicazione di calcolare le interruzioni di riga indipendenti dal dispositivo che sono portabili tra schermi, stampanti, tipi e piattaforme.
Per eseguire il layout di pagina indipendente dal dispositivo
- Normalizzare tutte le metriche di progettazione a un valore UHR (ultra-high resolution) comune (ad esempio, 65.536 DPI); ciò impedisce errori di round-off.
- Interruzioni di riga di calcolo in base alle metriche UHR e alla larghezza della pagina fisica; in questo modo viene restituito un punto iniziale e un punto finale di una riga all'interno del flusso di testo.
- Calcolare la larghezza della pagina del dispositivo nelle unità dispositivo, ad esempio pixel.
- Adattare ogni riga di testo alla larghezza della pagina del dispositivo usando le interruzioni di riga calcolate nel passaggio 2.
- Calcolare le interruzioni di pagina usando le metriche UHR e la lunghezza della pagina fisica; in questo modo viene restituito il numero di righe per pagina.
- Calcolare le altezze di linea nelle unità del dispositivo.
- Adattare le righe di testo nella pagina usando le righe per pagina dal passaggio 5 e l'altezza della linea dal passaggio 6.
Se tutte le applicazioni adottano queste tecniche, gli sviluppatori possono virtualmente garantire che i documenti spostati da un'applicazione a un'altra manterranno l'aspetto e il formato originali.