summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsFontDriver.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-09-14 16:53:04 +0800
committerPo Lu <luangruo@yahoo.com>2023-09-14 16:53:21 +0800
commit6ffb0a17199d70e5d4e5fc155897acf0ef2ccac6 (patch)
treec5f76e2dbe7fc3c0d1f448ff9f9f286956ce6fb9 /java/org/gnu/emacs/EmacsFontDriver.java
parentf13b08be11533c546fed257dcf8e3812a53b672a (diff)
Avert a crash in the Android last resort font driver
* java/org/gnu/emacs/EmacsFontDriver.java (FONT_INVALID_CODE): New constant. (hasChar, encodeChar): Accept a jint character code rather than a jchar. * java/org/gnu/emacs/EmacsSdk23FontDriver.java (hasChar) (encodeChar): Return 0 or FONT_INVALID_CODE if the character is not representable in a Java char. * java/org/gnu/emacs/EmacsSdk7FontDriver.java (hasChar): Ditto. * src/androidfont.c (android_init_font_driver): Adjust signature to match.
Diffstat (limited to 'java/org/gnu/emacs/EmacsFontDriver.java')
-rw-r--r--java/org/gnu/emacs/EmacsFontDriver.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/java/org/gnu/emacs/EmacsFontDriver.java b/java/org/gnu/emacs/EmacsFontDriver.java
index ff52899a897..798c3cfb032 100644
--- a/java/org/gnu/emacs/EmacsFontDriver.java
+++ b/java/org/gnu/emacs/EmacsFontDriver.java
@@ -63,6 +63,11 @@ public abstract class EmacsFontDriver
public static final int MONO = 100;
public static final int CHARCELL = 110;
+ /* Special glyph codes. */
+ public static final int FONT_INVALID_CODE = 0xFFFFFFFF;
+
+
+
public static class FontSpec
{
/* The fields below mean the same as they do in enum
@@ -148,15 +153,17 @@ public abstract class EmacsFontDriver
}
};
+
+
/* These mean the same as they do in struct font_driver. */
public abstract FontEntity[] list (FontSpec fontSpec);
public abstract FontEntity match (FontSpec fontSpec);
public abstract String[] listFamilies ();
public abstract FontObject openFont (FontEntity fontEntity, int pixelSize);
- public abstract int hasChar (FontSpec font, char charCode);
+ public abstract int hasChar (FontSpec font, int charCode);
public abstract void textExtents (FontObject font, int code[],
FontMetrics fontMetrics);
- public abstract int encodeChar (FontObject fontObject, char charCode);
+ public abstract int encodeChar (FontObject fontObject, int charCode);
public abstract int draw (FontObject fontObject, EmacsGC gc,
EmacsDrawable drawable, int[] chars,
int x, int y, int backgroundWidth,