2017-02-10 64 views
11

Win2D kullanarak bir Pencere Evrensel Uygulaması 'da verilen bir yazı tipinin yüksekliğini (boyutu, ağırlığı, stili gibi özellikleriyle birlikte) nasıl hesaplayacağını bilmek isterim.Bir FontFamily'un yüksekliğini Win2D (Çizgi Aralığı) ile nasıl hesaplarsınız?

Daha önce bir CanvasTextLayout kullanılan, ancak bu satırda gibi, çalışmak için bir metni gerektirir:

var ctl = new CanvasTextLayout(session, "Some text", new CanvasTextFormat(), constraintWidth, constraintHeight);

Benim durumumda, Ben bir metin OLMAYACAĞIM çünkü ne ben bir yazı tipinin tüm stilleri (stili, boyutu, ağırlığı ile ...) uygun olduğu yüksekliktir.

DÜZENLEME: Ben de CanvasFontFace sınıfıyla denedi, ama buna hiçbir public kurucu yok gibi görünüyor.

+0

GetGlyphRunBounds https://microsoft.github.io/Win2D/html/Overload_Microsoft_Graphics_Canvas_Text_CanvasFontFace_GetGlyphRunBounds.htm mi arıyorsunuz? Aksi halde CanvasTexFormat bir FontSize özelliğine sahiptir, her zamanki gibi font aileleriyle birlikte –

+0

Bence GetGlyphRunBounds ihtiyacım olan şey değil, çünkü en az bir tane glif belirtmek zorundayım. Bu sorunun tam karşılığı, ancak Win2D'de. http://stackoverflow.com/questions/4509613/how-to-calculate-font-height-in-wpf. Lütfen cevaba bakınız. WPF'de "LineSpacing" diyor. – SuperJMN

+0

WPF'de olduğu gibi varsayılan 'LineSpacing' değerini alabileceğinizi sanmıyorum. İlk önce metni çizmelisin. Bu Win2D'nin bir sınırlamasıdır. –

cevap

5

Ama siz zaten doğru yoldasınız. U görmek. g. Metin olarak fg. f, üst alanı g alt bölüme ayırır, böylece metnin geçerli yazı tipinde bir metnin toplam yüksekliğini alırsınız.

+0

Bu, her şeyden önce bir hack;) – SuperJMN

+0

Belki, ama bu sık sık herhangi bir sorun olmadan gördüm ve kullandım. Aslında, henüz tatmin edici bir alternatif bulamadım. Yine de çok meraklı olurdum. Çok küçük ya da çok büyük değerler ya da zayıf performansla problemlerim olduğunu hatırlıyorum, bunu başka bir şekilde çözmeye çalışıyorum. –

+0

Oh, ve tipografi anlamında "LineSpacing", çok satırlı metinleri daha iyi atamak için ek yükseklik birimleri içerebilir. Wpf ya da benzer bir şekilde 'LineSpacing' in bu şekilde davrandığı durumlar olup olmadığından emin değilim. Eğer gerçek metin boyunu mümkün olan herhangi bir ek alan olmadan gerçekten istiyorsaniz, bu çözüm, geçerli fontun üretecegi gliflerin metriklerine odaklandigi için tanimla dogru olmalidir. –