|
@@ -162,7 +162,7 @@
|
|
|
// measurement for describing font size, defined as 72 points per inch.
|
|
|
// stb_truetype provides a point API for compatibility. However, true
|
|
|
// "per inch" conventions don't make much sense on computer displays
|
|
|
-// since they different monitors have different number of pixels per
|
|
|
+// since different monitors have different number of pixels per
|
|
|
// inch. For example, Windows traditionally uses a convention that
|
|
|
// there are 96 pixels per inch, thus making 'inch' measurements have
|
|
|
// nothing to do with inches, and thus effectively defining a point to
|
|
@@ -172,6 +172,39 @@
|
|
|
// for non-commercial fonts, thus making fonts scaled in points
|
|
|
// according to the TrueType spec incoherently sized in practice.
|
|
|
//
|
|
|
+// DETAILED USAGE:
|
|
|
+//
|
|
|
+// Scale:
|
|
|
+// Select how high you want the font to be, in points or pixels.
|
|
|
+// Call ScaleForPixelHeight or ScaleForMappingEmToPixels to compute
|
|
|
+// a scale factor SF that will be used by all other functions.
|
|
|
+//
|
|
|
+// Baseline:
|
|
|
+// You need to select a y-coordinate that is the baseline of where
|
|
|
+// your text will appear. Call GetFontBoundingBox to get the baseline-relative
|
|
|
+// bounding box for all characters. SF*-y0 will be the distance in pixels
|
|
|
+// that the worst-case character could extend above the baseline, so if
|
|
|
+// you want the top edge of characters to appear at the top of the
|
|
|
+// screen where y=0, then you would set the baseline to SF*-y0.
|
|
|
+//
|
|
|
+// Current point:
|
|
|
+// Set the current point where the first character will appear. The
|
|
|
+// first character could extend left of the current point; this is font
|
|
|
+// dependent. You can either choose a current point that is the leftmost
|
|
|
+// point and hope, or add some padding, or check the bounding box or
|
|
|
+// left-side-bearing of the first character to be displayed and set
|
|
|
+// the current point based on that.
|
|
|
+//
|
|
|
+// Displaying a character:
|
|
|
+// Compute the bounding box of the character. It will contain signed values
|
|
|
+// relative to <current_point, baseline>. I.e. if it returns x0,y0,x1,y1,
|
|
|
+// then the character should be displayed in the rectangle from
|
|
|
+// <current_point+SF*x0, baseline+SF*y0> to <current_point+SF*x1,baseline+SF*y1).
|
|
|
+//
|
|
|
+// Advancing for the next character:
|
|
|
+// Call GlyphHMetrics, and compute 'current_point += SF * advance'.
|
|
|
+//
|
|
|
+//
|
|
|
// ADVANCED USAGE
|
|
|
//
|
|
|
// Quality:
|