xps glyphs richtig rendern
-
Hallo Leute,
wie kann ich xps glyphs richtig rendern?
if (null != p.Indices) { double xPos = 0.0; for (int i = 0; i < p.Indices.Count; i++) { double charWidth = 0; charWidth += CalcWidth(g.LeftSideBearings[(ushort)indize.GlyphIndex], p.FontRenderingEmSize); using (var gr = System.Drawing.Graphics.FromImage(b)) { System.Drawing.Text.PrivateFontCollection ttf; var fam = LoadFontFamily(fontPath, out ttf); var font = new System.Drawing.Font(fam, (float)p.FontRenderingEmSize); double x = p.OriginX + xPos + charWidth; double y = (p.OriginY - CalcWidth(g.CapsHeight, p.FontRenderingEmSize)); gr.DrawString(oneChar, font, System.Drawing.Brushes.Black, new System.Drawing.PointF((float)x, (float)y)); font.Dispose(); fam.Dispose(); ttf.Dispose(); } if (indize.HasAdvanceWidth) { charWidth = CalcWidth(indize.AdvanceWidth / 100, p.FontRenderingEmSize); } else charWidth = CalcWidth(g.AdvanceWidths[(ushort)indize.GlyphIndex], p.FontRenderingEmSize); xPos += charWidth; } }
<Glyphs Fill="#ff000000" FontUri="/Documents/1/Resources/Fonts/F1F21704-B051-488D-AED2-2A048DA59521.odttf" FontRenderingEmSize="3.98002" StyleSimulations="None" OriginX="0" OriginY="33.92" Indices="3,3015;100,48;455;393,51;286,49;3,24;876,40;3,24;100,48;455,44;393,57;3,776;18,52;381,52;437,52;374;410,32;396,36;455,44;3,25;18,52;381,52;282,56;286,49;3,24;876,40;3,24;62,44;263;374;282,52;286,48;396,36;272,45;381,52;282,52;286,48;3,386;87,53;258;400,40;400,40;393,52;381;396,36;410,32;3,24;69,64;437;373;271,52;286,49;396,36;3,24;876,40;3,24;87;258,49;400,36;400,40;374,52;437;373;373;286,48;396,36;3" UnicodeString=" Type / Typ Country Code / Ländercode Passport Number / Passnummer " /> <Glyphs Fill="#ff000000" FontUri="/Documents/1/Resources/Fonts/F1F21704-B051-488D-AED2-2A048DA59521.odttf" FontRenderingEmSize="5.25363" StyleSimulations="None" OriginX="0" OriginY="42.72" Indices="3,2284;47,24;24,64;3,826;39,64;28,48;90;3,975;1005,52;1006,52;1007,52;1008;1009,52;1010,52;1011,52;1012,52;1013;1004,49;3" UnicodeString=" ID GER 1234567890 " /> <Glyphs Fill="#ff000000" FontUri="/Documents/1/Resources/Fonts/F1F21704-B051-488D-AED2-2A048DA59521.odttf" FontRenderingEmSize="5.25363" StyleSimulations="None" OriginX="120" OriginY="59.36" Indices="68,85;437,52;400,40;410,36;286,49;396,36;373;258,51;374,52;374,55;3" UnicodeString="Mustermann " />
Wenn ich jetzt mehrere Zeilen Zeichne die in meinem XPS Dokument genau untereinander beginnen, hat jede Zeile auf meinem Bild dann einen anderen Beginn von links her.
Wie verhält sich das mit dem Left und Rightbearing? Muß ich das zu der AdvancedWidth des Buchstaben addieren oder ist das schon mit eingeschlossen? Was passiert wenn in dem XPS indice eine AdvancedWidth gegeben ist ersetzt es dann die AdvancedWidth des Buchstaben?
Wie bekomme ich es hindas die Buchstabenabstände stimmen, die sind immer viel zu klein im Moment?
MfG
-
Sieht nach C# aus... warum nicht ins richtige Forum posten?
-
ok sorry
du hast recht. Das passiert dann bei gemischten projekten.
Ich bitte den thread zu verschieben
MfG