rsc3/doc-schelp/HelpSource/Classes/Font.scrbl

316 lines
6.4 KiB
Text
Raw Normal View History

2022-08-24 13:53:18 +00:00
#lang scribble/manual
@(require (for-label racket))
@title{Font}
A font object@section{categories}
GUI>Accessories
@section{description}
This is the object you pass to other gui objects to set their font name or size.
@section{classmethods}
@section{private}
key
@section{method}
new
@section{argument}
name
An instance of link::Classes/String::. Must coincide with the name of a font on the system. See link::#*availableFonts::.
@section{argument}
size
An instance of link::Classes/Float::.
@section{argument}
bold
A Boolean.
@section{argument}
italic
A Boolean.
@section{argument}
usePointSize
A Boolean. Whether to regard the strong::size:: argument as point-size - adapting to the screen resolution.
@section{discussion}
Example:
@racketblock[
g = Font("Helvetica", 12);
::
]
@section{method}
availableFonts
@section{returns}
link::Classes/Array:: of the available fonts.
@section{method}
antiAliasing
@section{argument}
flag
An instance of link::Classes/Boolean::. Default value is
@racketblock[false::.
]
@section{method}
smoothing
@section{argument}
flag
An instance of link::Classes/Boolean::. Default value is
@racketblock[false::.
]
@section{method}
defaultSansFace
@section{returns}
The default sans serif face Font.
@section{method}
defaultSerifFace
@section{returns}
The default serif face Font.
@section{method}
defaultMonoFace
@section{returns}
The default monospace face Font.
@section{method}
default
The global default Font.
Setting this property is equivalent to
@racketblock[Font.setDefault(font)::. See link::#*setDefault:: for details.
]
@section{method}
setDefault
Sets the global default font. Properties of the
@racketblock[font:: argument will be combined with properties of the default system font, and those of individual views.
Optionally, a class can be given, so only views of that class will be affected.
Note that this will immediately affect any existing views.
]
@section{argument}
font
An instance of Font.
@section{argument}
class
A Class (either View or one of its subclasses), or
@racketblock[nil::.
]
@section{method}
sansSerif
Create a new sans serif face Font.
@section{method}
monospace
Create a new monospace face Font.
@section{method}
serif
Create a new serif face Font.
@section{instancemethods}
@section{method}
name
Gets/sets the name of the font.
@section{argument}
value
An instance of link::Classes/String::.
@section{method}
size
Gets/sets the size of the font.
Setting this variable is always considered as setting the link::#-pixelSize::, while getting it will return any size set. See link::#-hasPointSize:: for distinction.
@section{argument}
pixelSize
A Float.
@section{method}
hasPointSize
A Boolean variable indicating whether the link::#-size:: is regarded as pixel-size (precise amount of pixels), or point-size (adapting to screen resolution).
To change this, you need to set the size via link::#-pixelSize:: or link::#-pointSize::.
@section{method}
pixelSize
Gets or sets the pixel-size of the font. When getting, returns nil if the font has point-size instead. See link::#-hasPointSize:: for distinction.
@section{Argument}
Any number, but note that floats will be rounded to integer values when setting pixel-size.
@section{method}
pointSize
Gets or sets the point-size of the font. When getting, returns nil if the font has pixel-size instead. See link::#-hasPointSize:: for distinction.
@section{Argument}
A Float.
@section{method}
setDefault
Makes this instance of Font the default.
This is equivalent to calling link::#*setDefault:: with this Font and the given class as arguments.
@section{method}
storeArgs
(?)
@section{Returns}
an link::Classes/Array::,
@racketblock[ [ name, size ] ::.
]
@section{method}
boldVariant
@section{note}
On the Cocoa GUI it appends teletype::"-Bold":: to the name. This is only useful for fonts that have bold
variants.
::
@section{returns}
Bold variant of the Font.
@section{examples}
@racketblock[
(
w = Window.new.front;
t = StaticText(w, w.view.bounds).align_(\center);
t.string=" SUPERCOLLIDER";
)
t.font = Font("Monaco", 24);
(
var updateFont;
w = Window("Fonts", Rect(150, Window.screenBounds.height - 500, 400, 400)).front;
w.view.decorator = FlowLayout(w.view.bounds);
StaticText.new(w, Rect(5, 0, 30, 20)).string_("Font").align_(\right);
m = PopUpMenu(w, Rect(40, 0, 250, 20));
m.items = Font.availableFonts;
StaticText.new(w, Rect(290, 0, 28, 20)).string_("Size").align_(\right);
y = PopUpMenu(w, Rect(322, 0, 50, 20));
y.items = ["6","7","8","9","10","12","13","14","18","24","36","48","60","72","96"];
t = TextView(w, Rect(10, 40, 380, 150));
t.string = "\nThe quick drowned fox jumped over the lazy blog. \n\n 0 1 2 3 4 5 6 7 8 9 ";
a = StaticText(w, 200@20).string_("The quick drowned fox").background_(Color.rand).align_(\center);
b = Button(w, 200@20).states_([["The quick drowned fox"]]).background_(Color.rand);
c = PopUpMenu(w, 200@20).items_(["The quick drowned fox"]).background_(Color.rand);
y.action = {
var font;
font = Font(m.items[m.value],y.items[y.value].asInteger);
a.font_(font).refresh;
b.font_(font).refresh;
c.font_(font).refresh;
t.font_(font).refresh;
};
m.action = y.action;
m.valueAction = 3;
y.valueAction = 5;
)
(
var w, f;
w = Window("Fonts", Rect(128, 64, 340, 360));
w.view.decorator = f = FlowLayout(w.view.bounds,Point(4, 4),Point(4, 2));
[
"Helvetica-Bold",
"Helvetica",
"Monaco",
"Arial",
"Gadget",
"MarkerFelt-Thin"
].do({ arg name;
var v, s, n, spec, p, height = 16;
v = StaticText(w, Rect(0, 0, 110, height + 20));
v.font = Font(name, 13);
v.string = name;
s = Button(w, Rect(0, 0, 140, height + 20));
s.font = Font(name, 13);
s.states = [[name]];
n = NumberBox(w, Rect(0, 0, 56, height + 20));
n.font = Font(name, 13);
n.object = pi;
f.nextLine;
});
w.front;
)
(
var w, f, i = 0;
w = Window("Fonts", Rect(128, 64, 1024, 768));
b = ScrollView(w, w.view.bounds);
b.decorator = f = FlowLayout(b.bounds, Point(4,4), Point(4,2));
Font.availableFonts.do({ arg name;
var v, s, n, spec, p, height = 16, font;
font = Font(name,13);
v = StaticText(b, Rect(0, 0, 120, height + 20));
v.font = font;
v.string = name;
s = Button(b, Rect(0, 0, 140, height + 20));
s.font = font;
s.states = [[name]];
s.action = { font.asCompileString.postln; };
n = NumberBox(b, Rect(0, 0, 56, height + 20));
n.font = font;
n.object = pi;
if( (i = i + 1) % 3 == 0,{
f.nextLine;
});
});
w.front;
)
::
]