Update Android port

* doc/emacs/android.texi (Android Fonts): Update documentation.
* doc/lispref/frames.texi (Accessing Selections, X Selections):
Fix typos.
* src/sfntfont-android.c (system_font_directories)
(init_sfntfont_android): Add `/product/fonts'.
This commit is contained in:
Po Lu 2023-04-13 19:54:54 +08:00
parent 562b2fca7d
commit e11e56a057
3 changed files with 35 additions and 31 deletions

View file

@ -533,23 +533,23 @@ menu in the system settings, but this procedure may vary by device.
Emacs supports two font backends under Android: they are respectively
named @code{sfnt-android} and @code{android}.
Upon startup, Emacs enumerates all the TrueType format fonts in the
directory @file{/system/fonts}, and the @file{fonts} directory
(@dfn{user fonts directory}) inside the Emacs home directory. Emacs
assumes there will always be a font named ``Droid Sans Mono'', and
then defaults to using this font. These fonts are then displayed by
the @code{sfnt-android} font driver.
Upon startup, Emacs enumerates all the TrueType format fonts in the
directories @file{/system/fonts} and @file{/product/fonts}, and the
@file{fonts} directory (@dfn{user fonts directory}) inside the Emacs
home directory. Emacs assumes there will always be a font named
``Droid Sans Mono'', and then defaults to using this font. These
fonts are then displayed by the @code{sfnt-android} font driver.
When running on Android, Emacs currently lacks support for OpenType
When running on Android, Emacs currently lacks support for OpenType
fonts. This means that only a subset of the fonts installed on the
system are currently available to Emacs. If you are interested in
lifting this limitation, please contact @email{emacs-devel@@gnu.org}.
If the @code{sfnt-android} font driver fails to find any fonts at all,
Emacs falls back to the @code{android} font driver. This is a very
lousy font driver, because of limitations and inaccuracies in the font
metrics provided by the Android platform. In that case, Emacs uses
the ``Monospace'' typeface configured on your system; this should
If the @code{sfnt-android} font driver fails to find any fonts at
all, Emacs falls back to the @code{android} font driver. This is a
very lousy font driver, because of limitations and inaccuracies in the
font metrics provided by the Android platform. In that case, Emacs
uses the ``Monospace'' typeface configured on your system; this should
always be Droid Sans Mono.
@cindex TrueType GX fonts, android
@ -560,13 +560,13 @@ These fonts (also termed ``TrueType GX fonts'', ``variable fonts'',
and ``multiple master fonts'') provide multiple different styles
(``Bold'', ``Italic'', etc) using a single font file.
When a user-installed distortable font is found, each font that a
When a user-installed distortable font is found, each font that a
previously discovered font provided will no longer be used. In
addition, any previously specified distortable fonts with the same
family name are also removed. When a conventional font is found, any
previous conventional font with the same style and family will be
removed; distortable fonts with the same family will no longer be
used to provide that style.
removed; distortable fonts with the same family will no longer be used
to provide that style.
@node Android Troubleshooting
@section What to do when something goes wrong on Android

View file

@ -4064,21 +4064,23 @@ Emacs 25.1.
@section Accessing Selections
@code{gui-get-selection} is able to retrieve multiple different
kinds of selection data. However, the exact data types which Emacs
understands is not precisely specified and differs depending on the
window system on which Emacs is running.
kinds of selection data from any number of selections. However, the
data types and selections that Emacs understands is not precisely
specified and differs depending on the window system on which Emacs is
running.
At the same time, @code{gui-set-selection} hides a great deal of
complexity behind its back, at least on some systems: its @var{data}
argument need not be a string, but is actually given verbatim to
system specific code.
Emacs implements selections most completely on the X Window System.
This is both an artifact of history (X was the first window system
supported by Emacs) and one of technical reasons: instead of using
selections only to transfer text and multimedia content between
clients, X uses selections as a general inter-client communication
system, leading to a great proliferation of selection data types.
Emacs's implementation of selections is most complete on the X
Window System. This is both an artifact of history (X was the first
window system supported by Emacs) and one of technical reasons:
instead of using selections only to transfer text and multimedia
content between clients, X uses selections as a general inter-client
communication system, leading to a great proliferation of selection
data types.
Even more confusingly, X also supports another inter-client
communication mechanism: the Inter-Client Exchange. However, ICE is
@ -4097,17 +4099,18 @@ separate topic.
fixed number of selections. Selections are instead identified by X
``atoms'', which are unique 29-bit identifiers issued by the X server
for a corresponding name. In Emacs, you can simply write a symbol
with name of the atom, and Emacs will transparently request these
with the name of the atom, and Emacs will transparently request these
identifiers where necessary.
When a program ``sets'' a selection under X, it actually takes
ownership of the selection---the X server will then deliver selection
requests to the program, which is obliged to respond to the requesting
client with the selection data.
When a program ``sets'' a selection under X, it actually makes
itself the ``owner'' of the selection---the X server will then deliver
selection requests to the program, which is obliged to respond to the
requesting client with the selection data.
Similarly, a program does not ``get'' selection data from the X
server. Instead, its selection requests are sent to the client with
the window which last took ownership over the selection.
the window which last took ownership over the selection, which then
replies with the requested data.
Each selection request contains three parameters:

View file

@ -52,6 +52,7 @@ struct sfntfont_android_scanline_buffer
static char *system_font_directories[] =
{
(char *) "/system/fonts",
(char *) "/product/fonts",
/* This should be filled in by init_sfntfont_android. */
(char[PATH_MAX]) { },
};
@ -772,7 +773,7 @@ init_sfntfont_android (void)
/* Set up the user fonts directory. This directory is ``fonts'' in
the Emacs files directory. */
snprintf (system_font_directories[1], PATH_MAX, "%s/fonts",
snprintf (system_font_directories[2], PATH_MAX, "%s/fonts",
android_get_home_directory ());
}