Mercurial > octave
annotate scripts/gui/listfonts.m @ 33623:4517f929c59d bytecode-interpreter tip
maint: Merge default to bytecode-interpreter
author | Arun Giridhar <arungiridhar@gmail.com> |
---|---|
date | Fri, 24 May 2024 16:22:41 -0400 |
parents | 2e484f9f1f18 |
children |
rev | line source |
---|---|
28391
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
1 ######################################################################## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
2 ## |
32632
2e484f9f1f18
maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
31706
diff
changeset
|
3 ## Copyright (C) 2020-2024 The Octave Project Developers |
28391
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
4 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
7 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
9 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
13 ## (at your option) any later version. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
14 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
18 ## GNU General Public License for more details. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
19 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
23 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
24 ######################################################################## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
25 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
27 ## @deftypefn {} {fonts =} listfonts () |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
28 ## @deftypefnx {} {fonts =} listfonts (@var{h}) |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
29 ## List system fonts. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
30 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
31 ## If a handle to a graphics object @var{h} is provided, also include the |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
32 ## font from the object's @qcode{"FontName"} property in the list. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
33 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
34 ## Programming Note: On systems that don't use FontConfig natively (all but |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
35 ## Linux), the font cache is built when Octave is installed. You will need to |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
36 ## run @code{system ("fc-cache -fv")} manually after installing new fonts. |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
37 ## |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
38 ## @seealso{uisetfont, text, axes, uicontrol} |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
39 ## @end deftypefn |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
40 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
41 function fonts = listfonts (h) |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
42 |
28392
d872aed70d27
listfonts.m: Fix problem accidentaly introduced in c126a60b0d52.
Rik <rik@octave.org>
parents:
28391
diff
changeset
|
43 if (nargin == 1 && (! ishghandle (h) || ! isprop (h, "fontname"))) |
28391
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
44 error (['listfonts: H must be a handle to a graphics object ', ... |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
45 'with a "fontname" property']); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
46 endif |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
47 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
48 persistent sysfonts = get_fonts (); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
49 fonts = sysfonts; |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
50 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
51 if (nargin == 1 && ! isempty (h)) |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
52 font = get (h, "fontname"); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
53 if (! strcmp (font, "*")) |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
54 fonts = unique ([fonts font]); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
55 endif |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
56 endif |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
57 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
58 endfunction |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
59 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
60 function fonts = get_fonts () |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
61 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
62 fontfiles = __get_system_fonts__ (); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
63 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
64 fonts = unique ({fontfiles.family, "FreeSans"}); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
65 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
66 endfunction |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
67 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
68 |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
69 ## Test input validation |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
70 %!error listfonts (0, 0) |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
71 %!error <H must be a handle to a graphics object with a "fontname" property> |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
72 %! s = listfonts (0); |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
73 %!error <H must be a handle to a graphics object> |
c126a60b0d52
listfonts.m: New function (bug #58476).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
74 %! s = listfonts (struct ()); |