2011-02-18 13 views
7

verilen bir yazı tipi için ascender/descender ve x yükseklik almak nasıl bir ascender/descender ve x-height ..Ben almak gerekir

Ben descender ve toplam yüksekliği bulabilirsiniz Aşağıdaki kodu kullanarak:

descender_height = paint.descent(); 
total_height = descender_height - paint.ascent(); 
//ascender = ?; is this always equal to descender height? 
//x_height = ?; total_height - 2*descender_height ? 

Teşekkür

cevap

5

Ben ascender ve descender yüksekliği genelde aynı olacağını düşünürdüm, ama ben her yazı tipi için buna bağlıdır olmaz. Gerçekten x-yüksekliğine ulaşmanın doğrudan bir yolunu görmüyorum, ama kullanabileceğin bir hile aşağıdaki gibi olurdu. Ayrıca, toplam yükseklik için, en yüksek yükselişten en düşük inişçiye olan mutlak uzaklıktan mı bahsediyorsunuz? Ayrıca bunun için bir şey ekledim. Bunları kendim test etmedim ama işe (ama Söylediğin şey yanlış yorumlama ediyorum bana bildirin) olmalıdır:

// Assuming TextPaint/Paint tp; 
Rect bounds; 

// this will just retrieve the bounding rect for 'x' 
tp.getTextBounds("x", 0, 1, bounds); 
int xHeight = bounds.height(); 

Paint.FontMetrics metrics = tp.getFontMetrics(); 
int totalHeight = metrics.top - metrics.bottom; 
1

Bu benim için çalıştı budur:

Paint.FontMetrics fm = paint.getFontMetrics(); 
int totalHeight = (int)(fm.bottom - fm.top + .5f);