myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » Pixel Längen eines Buchstabens (aus nicht-installierter Fontdatei)
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Pixel Längen eines Buchstabens (aus nicht-installierter Fontdatei)

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
sth_Weird sth_Weird ist weiblich
myCSharp.de-Mitglied

avatar-897.gif


Dabei seit: 17.01.2007
Beiträge: 469
Entwicklungsumgebung: Visual Studio 2015
Herkunft: BaWü


sth_Weird ist offline

Pixel Längen eines Buchstabens (aus nicht-installierter Fontdatei)

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hallo,
ich möchte eine Schriftart laden (TTF, muss nicht installiert sein), deren unterstützte Zeichen ermitteln und dann die Breite jedes Zeichens in Pixel, abhängig von der Schriftgröße (auch in Pixel) ermitteln.
Die FontFamily lade ich mit dem System.Windows.Media Namespace, darüber komme ich auch an das GlyphTypeface und die CharacterMap. Leider sehe ich hier keine Möglichkeit, an eine Breite in Pixeln zu kommen. So ein Glyph hat zwar Properties wie AdvancedWidth etc (was sich schon genau nach dem anhört was ich brauche), aber da kommen immer Doubles zurück und ich habe bisher keine sinnvolle Umrechnung in Pixel gefunden, es kommen immer seltsame Werte raus die nicht passen. Ich kenne auch die Variante mit dem System.Windows.Forms und System.Drawing Namespace, da gibt es dann ja TextMetrics und (graphics-Objekt).MeasureText, aber hier wiederum habe ich keine Möglichkeit gefunden an die CharacterMap zu kommen (und graphics-Objket hab ich auch nicht, ich will den Text auch nicht zeichnen oder so ich will nur die geräteunabhängigen Pixel-Breiten eines Zeichens ausgeben)
Hat jemand nen Tipp wie man das am besten hinbekommt?
Beim googeln bin ich nicht weiter gekommen, dort wird immer entweder die CharacterMap gesucht ODER die Zeichenbreite.

Mir fiele nur ein die beiden Varianten zu kombinieren (also CharacterMap mit dem einen FontFamily Objekt bestimmen und dann die FontFamily nochmal im anderen Namespace laden und mit TextMetrics die Breiten berechnen), ich will aber noch nicht glauben dass es da nicht eine bessere Lösung gibt und hoffe deshalb auf Tipps.

gruß & thx
sth_Weird
Neuer Beitrag 31.07.2014 10:25 Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo sth_Weird,

siehe  MeasureString und Alternativen [Minimales einschließendes Rechteck der Schrift ermitteln].

Wozu brauchst du das?

Willst du später für einen (längeren) Text die Breiten der Buchstaben addieren, um die Bereite des Textes zu ermitteln? Das würde nämlich nicht so richtig klappen, denn es kommt nicht nur auf die Bereite der Buchstaben an, sondern auch auf die Abstände der Buchstaben untereinander. Die sind aber nicht fest, sondern hängen davon ab, welche Buchstaben hintereinander folgen (siehe z.B.  Unterschneidung (Typografie) und  Ligatur (Typografie)). Der Abstand von einem V zu einem A ist (bezogen auf die die Buchstaben umschließenden Rechtecke) z.B. in der Regel geringer als zu einem L.

herbivore
Neuer Beitrag 31.07.2014 12:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
sth_Weird sth_Weird ist weiblich
myCSharp.de-Mitglied

avatar-897.gif


Dabei seit: 17.01.2007
Beiträge: 469
Entwicklungsumgebung: Visual Studio 2015
Herkunft: BaWü

Themenstarter Thema begonnen von sth_Weird

sth_Weird ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich möchte theoretisch eine einfachere Variante dieses Tools nachprogrammieren (ich muss nur an die Pixel-Werte kommen, eine GUI dazu oder den c-Output brauche ich nicht (dafür aber andere Funktionen die das Tool nicht mitbringt, z.B. dass ich die Font aus einer Datei lade und diese NICHT installieren muss).
 emWin Font Converter
oder (scheint fast so als wäre das der gleiche...)
 emWin: Font Converter and Editor

gruß
sth_Weird
Neuer Beitrag 31.07.2014 12:44 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.535
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi sth_Weird,

welche Pixelwerte? True Type ist ein Vektor-Format, da stehen keine Pixelangaben drin. Das TTF-Format ist gut beschrieben, vielleicht solltest du dir mal anschauen, welche Informationen da drin stehen und welche Informationen du davon brauchst.

Christian
Neuer Beitrag 31.07.2014 15:41 Beiträge des Benutzers | zu Buddylist hinzufügen
sth_Weird sth_Weird ist weiblich
myCSharp.de-Mitglied

avatar-897.gif


Dabei seit: 17.01.2007
Beiträge: 469
Entwicklungsumgebung: Visual Studio 2015
Herkunft: BaWü

Themenstarter Thema begonnen von sth_Weird

sth_Weird ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich meinte die Pixel-Werte die in der Anzeige unten rechts stehen... Width, X-Position, Y-Position, Cursor-Dist. etc...das ist ja alles in Pixel und die muss das Tool doch irgendwie auch berechnen können?
Nuja, guck mir jetzt mal das TTF Format an, vielleicht hilft mir das ja weiter...
Neuer Beitrag 01.08.2014 09:00 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Jahre.
Der letzte Beitrag ist älter als 6 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 31.10.2020 11:49