]> git.eshelyaron.com Git - emacs.git/commitdiff
Update Android port
authorPo Lu <luangruo@yahoo.com>
Thu, 13 Apr 2023 11:54:54 +0000 (19:54 +0800)
committerPo Lu <luangruo@yahoo.com>
Thu, 13 Apr 2023 11:54:54 +0000 (19:54 +0800)
* 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'.

doc/emacs/android.texi
doc/lispref/frames.texi
src/sfntfont-android.c

index 67faea7f76dae012890b8810c031bc04e76246d4..e79d322626349b1f4d900616a3c5677e455f11e2 100644 (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.
-
-When running on Android, Emacs currently lacks support for OpenType
+  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
 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
index 7a752c1f6a919f80ca5db29d49d6cc124588ec8b..a8a02114ecb52b8a72b29301271f7d049f9b3c09 100644 (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:
 
index 5e4c8fc6c9feb08b33083371b2bcefd926f0906c..de2a9253b573e03a88fae79a6a250bdc910d4da5 100644 (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 ());
 }