Ich bin Programmierer und habe einen Druckcode, der ein Raster auf das Papier zeichnet.
Das Raster hat 4 Spalten und sie haben die gleiche horizontale Länge. Die Höhe der Zelle beträgt ein Zehntel der Papiergröße und ist fest.
Die Gesamtzahl der Zeilen ist unbekannt, aber ich weiß genau, dass es mindestens eine Zeile geben wird und dass die Zellen feste Abmessungen haben werden.
Die maximale Anzahl von Zeichen, die in eine Zelle passen, beträgt 50.
Der Benutzer kann das Papierformat auswählen, auf dem gedruckt werden soll, und dort stehe ich vor einem Problem:
Da die Zellenabmessungen von der Papiergröße abhängen, weiß ich nicht, wie ich die Schriftgröße berechnen soll, damit der Text in die Zelle passt.
Ich habe bei StackOverflow um Hilfe gebeten, bin aber gescheitert und habe versucht, eine mathematische Formel zu finden, aber diese Lösung hat nicht in jedem Fall funktioniert.
Entschuldigung, dass ich hier frage, aber ich bin im Moment verzweifelt. Wenn weitere Informationen erforderlich sind, fragen Sie bitte und ich werde meinen Beitrag aktualisieren.
Danke schön.
Im Allgemeinen hat eine Programmiersprache einen Gerätekontext, der es Ihnen ermöglicht, einen Beispieltext zu zeichnen und dann seine Breite und Höhe zu messen. Zum Beispiel in Python mit dem wxPython GUI Toolkit:
import wx
dc = wx.ScreenDC()
#yourFont = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, True)
#dc.SetFont(yourFont)
w,h = dc.GetTextExtent('X')
Unabhängig davon, welche Tools Sie verwenden, sind die Anforderungen im Allgemeinen gleich. Sie müssen Ihre gewünschte Schriftgröße und den gewünschten Zellenabstand kennen:
cell_height = padding_top + text_height + padding_bottom
wobei Einheiten im Allgemeinen Pixel sind und text_height af(fontSize) ist.
Im Allgemeinen ist es nicht ratsam, Schriftarten basierend auf der Breite zu skalieren, es sei denn, Sie möchten den Text umbrechen. Verwenden Sie ein '...' oder ähnliches, um kurzen langen Text abzuschneiden, wenn Sie keine neue Zeile verwenden können.
Schreiben Sie auch keinen eigenen Textumbruchcode. Nochmal in Python:
import textwrap
a = "This sentence is less than 50 characters"
widthInChars = 20
lines = textwrap.wrap(a,widthInChars)
Jetzt haben Sie eine Beziehung zwischen Schriftgröße, Zeilenabstand, Polsterung und Zellengröße.
WinAPI
und C++
. Ich habe einen Gerätekontext und eine Funktion, die die Länge des Textes misst, aber zuerst muss ich die Schriftart im Gerätekontext auswählen. Das heißt, ich muss die Schriftgröße "raten", die Textlänge berechnen und erst dann prüfen, ob sie in die Zelle passt. Wenn es nicht passt, muss ich "etwas tun", um das zu beheben. Im Allgemeinen ist es nicht ratsam, Schriftarten basierend auf der Breite zu skalieren, es sei denn, Sie möchten den Text umbrechen. Ich bin bereit, die Verpackung zu übernehmen (aber ich kann ...
den zusätzlichen Text nicht ausschneiden). Es gibt nichts Vergleichbares lines = textwrap.wrap(a,widthInChars)
in WinAPI
.DrawTextExt
, die meine Pläne ruinieren, aber Sie haben mein Problem verstanden. Ich brauche etwas in dieser Richtung, das das übergebene Rechteck nicht ändert, wenn der Text zu lang/hoch ist.Wenn der Benutzer das gedruckte Papierformat aus einer Liste auswählen kann, bevor er Text in die Zellen eingibt, können Sie dann eine Reihe von Papierformaten durchlaufen und der Tabelle je nach Papier eine Schriftgröße zuweisen? Dies würde viele Tests erfordern, um festzustellen, welche Schriftarten zu welcher Papiergröße passen.
1 Sie erhalten die Größe für alle Zeichen der Schriftart, einschließlich aller (Großbuchstaben und ,-+'"&*#$ usw.), da alle Schriftarten unterschiedliche Trennungen zwischen den Zeichen haben.
<div id='size23' >dd</div>...<div id='size43' >didididi</div>.... <div id='size54' >dwdwdwdw</div>
und verwenden Sie Javascript, um die Größe mit verschiedenen Kombinationen von Zeichen zu erhalten
Width43 = getElementById('size43').offsetWidth; ....
2.-Jede Schriftart hat eine Proportionsgröße, Höhe/Breite und Schriftartmetriken (benutzerdefinierte zusätzliche Proportionen). Sie erhalten Proportionen und Schriftartmetriken für diese Schriftart. Weitere Informationen finden Sie hier . Verwenden Sie ein Bild aus dem Zoom-Schrifttext, um es zu erhalten.
3.-Verwenden Sie die Proportionsnummer, um Größen für Zellen wie as zu erhalten
proportion_number_font = 0.6
size_a = 0.10; size_b = 0.9 ...
total_a = 10, total_u = 5 , ......
Total_size = 34;
cell_width = total_size
cell_height = 0.6*34 ;
n = 2 // n is a proportional
addjust_cell_proportion = cell_width * n * proportion_number_font;
Benutzer13497
Benutzer13497
ImmerNeues Lernen
ImmerNeues Lernen
Benutzer13497
ImmerNeues Lernen