Domanda

Utilizzo di un certo tipo di carattere, io uso FontLayout di Java per determinare la sua ascesa, la discesa, e di primo piano. (Vedi FontLayout esercitazione qui )

Nel mio caso specifico sto usando Arial Unicode MS, dimensione del carattere 8. utilizzando il seguente codice:

    Font font = new Font("Arial Unicode MS", 0, 8);
    TextLayout layout = new TextLayout("Pp", font,
                               new FontRenderContext(null, true, true));
    System.out.println( "Ascent: "+layout.getAscent());
    System.out.println( "Descent: "+layout.getDescent());
    System.out.println( "Leading: "+layout.getLeading());

Java mi dà i seguenti valori:

    Ascent: 8.550781
    Descent: 2.1679688
    Leading: 0.0

Fin qui tutto bene. Tuttavia se uso la somma di questi valori come il mio interlinea per diverse righe di testo, questo si differenzia da un bel po 'dal interlinea utilizzata in OpenOffice, Microsoft Word, ecc .: è più piccolo. Quando si utilizza singola linea di default spaziatura delle parole e OO sembrano avere una spaziatura di circa 13.7 pt (al posto di 10,7 pt come ho calcolato utilizzando metriche di font di Java sopra).

Qualche idea

  1. perché questo è?
  2. se posso in qualche modo accedere alle informazioni di carattere Word e OpenOffice sembrano essere accesso che porta a questo interlinea diversa?

Le cose che ho provato finora:

  • l'aggiunta di tutti i glifi di un vettore glifo con font.getNumGlyphs() ecc - ancora ottenere i valori di metrica stesso tipo di carattere
  • utilizzando linee multiple come descritto qui - ogni linea ottengo ha gli stessi parametri di carattere come sopra
  • .
  • utilizzando FontMetrics' metodi come getLeading()
È stato utile?

Soluzione

Zarkonnen non merita le sue downvotes come lui è sulla strada giusta. Molti font Java sembrano restituire zero per il loro leader quando forse non dovrebbero. Forse è giù per questo bug : Non lo so. Sembrerebbe essere giù a voi per mettere questo spazio bianco indietro nel.

altezza della linea tipografica viene solitamente definita come salita + discesa + leader. Salita e discesa sono misurati verso l'alto e verso il basso dalla linea di base che i caratteri siedono, e il principale è lo spazio tra la discesa di una riga e la salita della linea sotto.

alt text

Ma che porta non è fisso. È possibile impostare il leader nella maggior parte Word-processing e software tipografico. Parola chiama questo l'interlinea. La domanda iniziale è probabilmente chiedendo come Microsoft Word calcola la sua interlinea singola. raccomandazioni per i font OpenType sembrano suggerire che il software su diverse piattaforme calcolano in modo diverso . (Forse questo è il motivo per cui Java ora restituisce zero?)

Un po 'veloce di Googling intorno sembra indicare che una regola empirica per aver guidato è 120% di salita + discesa per linea singola spaziatura o una spaziatura punto fisso; dicono 2pts leader tra tutte le linee. In assenza di qualsiasi regola dura o veloce che posso trovare, direi che si riduce alla leggibilità del testo che stai presentando, e si dovrebbe solo andare con quello che si pensa sembra migliore.

Altri suggerimenti

Are Word e OO compreso lo spazio bianco tra le linee, mentre Java non è?

Così in Word / OO, il numero è salita + discesa + Spazio bianco, mentre in Java basta Salita + discesa?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top