315 lines
6.4 KiB
Racket
315 lines
6.4 KiB
Racket
#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;
|
|
)
|
|
::
|
|
]
|
|
|
|
|