aboutsummaryrefslogtreecommitdiff
path: root/win32/winfont.c
diff options
context:
space:
mode:
authorTakamichi Horikawa <takamichiho@gmail.com>2017-01-31 23:06:43 +0900
committerTakamichi Horikawa <takamichiho@gmail.com>2017-01-31 23:06:43 +0900
commitd46eb009c132b555761b95e6ac3318539dddb20e (patch)
treec5a89c651e32e263482d53c1ee4cca44bcb58066 /win32/winfont.c
parent92ac7de6585e64006db631d6c39d4a7ef00f4776 (diff)
use multibytetowidechar to convert charset
Diffstat (limited to 'win32/winfont.c')
-rw-r--r--win32/winfont.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/win32/winfont.c b/win32/winfont.c
index 4632d51..fb98ccd 100644
--- a/win32/winfont.c
+++ b/win32/winfont.c
@@ -11,7 +11,7 @@ struct font_win32 {
uint8_t buf[16];
};
-
+/*
#include "jisunih.h"
uint16_t jis2unih(uint8_t jis) {
@@ -26,7 +26,15 @@ uint16_t jis2unih(uint8_t jis) {
return jis;
}
}
-
+*/
+uint16_t jis2unih(uint8_t jis) {
+ uint16_t wbuf[2];
+ int outchar = MultiByteToWideChar(932, MB_ERR_INVALID_CHARS,
+ (char *)&jis, 1, (wchar_t *)wbuf, 2);
+ if (!outchar) return 0;
+ return wbuf[0];
+}
+/*
#include "jisuni.h"
uint16_t jis2uni(uint16_t jis) {
@@ -40,6 +48,16 @@ uint16_t jis2uni(uint16_t jis) {
}
return 0;
}
+*/
+uint16_t jis2uni(uint16_t jis) {
+ uint16_t sjis = jis2sjis(jis);
+ uint8_t abuf[2] = {sjis>>8, sjis};
+ uint16_t wbuf[2];
+ int outchar = MultiByteToWideChar(932, MB_ERR_INVALID_CHARS,
+ (char *)abuf, 2, (wchar_t *)wbuf, 2);
+ if (!outchar) return 0;
+ return wbuf[0];
+}
static const void *winfont_get(const struct fmdsp_font *font,
uint16_t c, enum fmdsp_font_type type) {