linux软件怎么增加中文输出-----编译lcd4linux

其它类软件,非上述版软件
回复
头像
netusb
帖子: 3
注册时间: 2021-09-26 9:57
系统: ubuntu14

linux软件怎么增加中文输出-----编译lcd4linux

#1

帖子 netusb » 2021-09-26 10:33

RT 在路由器和X86主机上,使用linux 内核的设备,
都会能获得 lcd4linux 软件的支持和使用。

lcd4linux 是一款开源软件,源码地址 https://github.com/jmccrohan/lcd4linux
可以与许多的显示屏幕运作,输出显示。
具体显示内容是 根据 一个 *.conf 的配置 文本实现。

代码: 全选

目前唯一不足的是 在 *.conf 中,不支持中文显示。
----------
同一款显示屏 AX206 数码相框
在PC上,windows 系统中 使用 AIDA64 里面是可以 显示中文的。
在 linux 或嵌入式 linux 系统中,使用 lcd4linux ,配置 *.conf ,添加中文字符,不能正常显示。

通过上面两种系统和不同软件的使用对比,希望能得到帮助,解决lcd4linux 不支持中文输出的问题。

安装编译基础包

代码: 全选

#apt-get install python-dev python make autoconf gcc g++ subversion unzip gettext libusb++-dev libtool libtool-bin sdcc pkg-config
检出lcd4linux源码
#git clone https://github.com/jmccrohan/lcd4linux lcd4linux
#cd lcd4linux
#chmod -R 755 /usr/src/dpf/lcd4linux
#./bootstrap
#./configure
#make       --如果编译时报错,尝试再次编译
#make install
头像
astolia
论坛版主
帖子: 6451
注册时间: 2008-09-18 13:11

Re: linux软件怎么增加中文输出-----编译lcd4linux

#2

帖子 astolia » 2021-09-26 15:49

如果你的文字内容是固定的,你可以直接把文字做成图片,以图片方式显示,不需要改动任何代码
否则要用freetype库获取字形,再去设置特定像素点的颜色。可以参考 https://blog.csdn.net/TECH_PRO/article/details/73437735
当然如果文字内容是相对有限的,也可以像 https://github.com/jmccrohan/lcd4linux/ ... font_6x8.h 一样在代码中内嵌字形
头像
netusb
帖子: 3
注册时间: 2021-09-26 9:57
系统: ubuntu14

Re: linux软件怎么增加中文输出-----编译lcd4linux

#3

帖子 netusb » 2021-09-26 16:09

astolia 写了: 2021-09-26 15:49 如果你的文字内容是固定的,你可以直接把文字做成图片,以图片方式显示,不需要改动任何代码
否则要用freetype库获取字形,再去设置特定像素点的颜色。可以参考 https://blog.csdn.net/TECH_PRO/article/details/73437735
当然如果文字内容是相对有限的,也可以像 https://github.com/jmccrohan/lcd4linux/ ... font_6x8.h 一样在代码中内嵌字形

方法1 图片已经尝试过,操作有点复杂。具体为调试时 对齐和调整。

方法2未尝试。--能力有限

方法3 有过摸索,但是基于汉字比较多,汉字点阵最小是 12px 的。未继续。
-------------
换个思路 汉化 lcd4linux 会不会容易些。
头像
astolia
论坛版主
帖子: 6451
注册时间: 2008-09-18 13:11

Re: linux软件怎么增加中文输出-----编译lcd4linux

#4

帖子 astolia » 2021-09-26 16:52

netusb 写了: 2021-09-26 16:09 换个思路 汉化 lcd4linux 会不会容易些。
跟汉化没关系。反正要以文字方式显示,就躲不过解析每一个字符的字形。这个就涉及到从字符串中拆分出字符和从某种字体/字库中取得对应的字形。而现在的情况是,lcd4linux中既没有专门拆分中文字符也没有处理中文字体/字库的代码,必须读懂lcd4linux代码逻辑后在适当位置添加这部分的内容,这个步骤逃不掉的。
头像
netusb
帖子: 3
注册时间: 2021-09-26 9:57
系统: ubuntu14

Re: linux软件怎么增加中文输出-----编译lcd4linux

#5

帖子 netusb » 2021-09-29 16:23

astolia 写了: 2021-09-26 16:52
netusb 写了: 2021-09-26 16:09 换个思路 汉化 lcd4linux 会不会容易些。
跟汉化没关系。反正要以文字方式显示,就躲不过解析每一个字符的字形。这个就涉及到从字符串中拆分出字符和从某种字体/字库中取得对应的字形。而现在的情况是,lcd4linux中既没有专门拆分中文字符也没有处理中文字体/字库的代码,必须读懂lcd4linux代码逻辑后在适当位置添加这部分的内容,这个步骤逃不掉的。
常用汉字太多了,
找到一个解决方法,但被字符宽度局限了,目前唯一突破口待解决。

(不确定里面有没有像素宽度定义 https://github.com/jmccrohan/lcd4linux/ ... get_icon.c

定义文字大小为 16 *16 像素
使用widget_icon ,但是显示出来的宽度只有8个像素 。
config.jpg
config2.jpg
图标小部件
图标小部件用于显示用户定义的字符(我们称它们为图标)。只有当显示屏支持用户定义的字符(大多数显示器都支持图标),并且您为图标保留了一些字符,或者您的显示屏是图形字符(例如 T6963)时,您只能使用图标。有关详细信息,请参阅显示驱动器的文档。

如果由于任何原因无法显示图标,则将改用星号 ('*)。

代码: 全选

https://wiki.lcd4linux.tk/doku.php/widget_icon

代码: 全选

Display dpf {
    Driver     'DPF'       # 默认
    Port       'usb0'      # 默认
    Font       '16x16'     # 字体大小
    Foreground 'FFFFFF'    # 边框颜色
    Background '000000'    # 边框内背景颜色
    Basecolor  '4876FF'    # 全局背景色
    Orientation 2      # 0 = standard, 1 = rotate 90° CW ,2 = rotate 180°, 3 = rotate 90° CCW
    Backlight  backlight   # Backlight variable control, 0..7 (0=off, 7=max)
}

##测试区域############################################

Widget OS {
    class 'Text'
    expression '* '.uname('sysname').' '.uname('release').' *'
    width 20
    align 'PL'
#    style 'bold'
    speed 1000	
    update tick
}

Widget zifu {
    class 'icon'
    speed 1000
    update 1000
    background '272822'
    bitmap {
        row1 '.......*........'
        row2 '..*....*....*...'
        row3 '...**..*...**...'
        row4 '....*..*..*.....'
        row5 '.......*........'
        row6 '..***********...'
        row7 '.......*........'
        row8 '.......*........'
        row9 '.......*.....*..'
        row10 '***************.'
        row11 '.......*........'
        row12 '.......*........'
        row13 '.......*........'
        row14 '.......*........'
        row15 '.......*........'
        row16 '.......*........'
    }

}

Widget zifu2 {
    class 'icon'
    speed 1000
    update 1000
    bitmap {
        row1 '........'
        row2 '....*...'
        row3 '...**...'
        row4 '..*.....'
        row5 '........'
        row6 '*****...'
        row7 '........'
        row8 '........'
        row9 '.....*..'
        row10 '*******.'
        row11 '........'
        row12 '........'
        row13 '........'
        row14 '........'
        row15 '........'
        row16 '........'
    }
}


Widget Heartbeat {
    class 'Icon'
    speed  800
    Bitmap {
	Row1 '.....|.....'
	Row2 '.*.*.|.*.*.'
	Row3 '*****|*.*.*'
	Row4 '*****|*...*'
	Row5 '.***.|.*.*.'
	Row6 '.***.|.*.*.'
	Row7 '..*..|..*..'
	Row8 '.....|.....'
    }
}






Widget LightningTest {
    class 'icon'
    speed 500
    visible test::onoff(0)
    bitmap {
        row1 '...***'
        row2 '..***.'
        row3 '.***..'
        row4 '.****.'
        row5 '..**..'
        row6 '.**...'
        row7 '**....'
        row8 '*.....'
    }
}


# Icons

Widget Heartbeat {
    class 'Icon'
    speed 800
    Bitmap {
	Row1 '.....|.....'
	Row2 '.*.*.|.*.*.'
	Row3 '*****|*.*.*'
	Row4 '*****|*...*'
	Row5 '.***.|.*.*.'
	Row6 '.***.|.*.*.'
	Row7 '..*..|..*..'
	Row8 '.....|.....'
    }
}

Widget EKG {
    class 'Icon'
    speed 50
    Bitmap {
	Row1 '.....|.....|.....|.....|.....|.....|.....|.....'
	Row2 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
	Row3 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
	Row4 '.....|....*|...**|..**.|.**..|**...|*....|.....'
	Row5 '.....|....*|...**|..**.|.**..|**...|*....|.....'
	Row6 '.....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....'
	Row7 '*****|*****|****.|***..|**..*|*..**|..***|.****'
	Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
    }
}
Widget Karo {
    class 'Icon'
    speed 200
    Bitmap {
	Row1 '.....|.....|.....|.....|..*..|.....|.....|.....'
	Row2 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
	Row3 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
	Row4 '.....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..'
	Row5 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
	Row6 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
	Row7 '.....|.....|.....|.....|..*..|.....|.....|.....'
	Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
    }
}
Widget Heart {
    class 'Icon'
    speed 250
    Bitmap {
	Row1 '.....|.....|.....|.....|.....|.....'
	Row2 '.*.*.|.....|.*.*.|.....|.....|.....'
	Row3 '*****|.*.*.|*****|.*.*.|.*.*.|.*.*.'
	Row4 '*****|.***.|*****|.***.|.***.|.***.'
	Row5 '.***.|.***.|.***.|.***.|.***.|.***.'
	Row6 '.***.|..*..|.***.|..*..|..*..|..*..'
	Row7 '..*..|.....|..*..|.....|.....|.....'
	Row8 '.....|.....|.....|.....|.....|.....'
    }
}
Widget Blob {
    class 'Icon'
    speed 250
    Bitmap {
	Row1 '.....|.....|.....'
	Row2 '.....|.....|.***.'
	Row3 '.....|.***.|*...*'
	Row4 '..*..|.*.*.|*...*'
	Row5 '.....|.***.|*...*'
	Row6 '.....|.....|.***.'
	Row7 '.....|.....|.....'
	Row8 '.....|.....|.....'
    }
}
Widget Wave {
    class 'Icon'
    speed 100
    Bitmap {
	Row1 '..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**'
	Row2 '.*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..'
	Row3 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
	Row4 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
	Row5 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
	Row6 '.....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....'
	Row7 '.....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....'
	Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....'
    }
}
Widget Squirrel {
    class 'Icon'
    speed 100
    Bitmap {
	Row1 '.....|.....|.....|.....|.....|.....'
	Row2 '.....|.....|.....|.....|.....|.....'
	Row3 '.....|.....|.....|.....|.....|.....'
	Row4 '**...|.**..|..**.|...**|....*|.....'
	Row5 '*****|*****|*****|*****|*****|*****'
	Row6 '...**|..**.|.**..|**...|*....|.....'
	Row7 '.....|.....|.....|.....|.....|.....'
	Row8 '.....|.....|.....|.....|.....|.....'
    }
}

Widget Lightning {
    class 'icon'
    speed 100
    visible cpu('busy', 500)-50
    bitmap {
        row1 '...***'
        row2 '..***.'
        row3 '.***..'
        row4 '.****.'
        row5 '..**..'
        row6 '.**...'
        row7 '**....'
        row8 '*.....'
    }
}

Widget Rain {
    class 'icon'
    speed 200
    bitmap {
	row1 '...*.|.....|.....|.*...|....*|..*..|.....|*....'
	row2 '*....|...*.|.....|.....|.*...|....*|..*..|.....'
	row3 '.....|*....|...*.|.....|.....|.*...|....*|..*..'
	row4 '..*..|.....|*....|...*.|.....|.....|.*...|....*'
	row5 '....*|..*..|.....|*....|...*.|.....|.....|.*...'
	row6 '.*...|....*|..*..|.....|*....|...*.|.....|.....'
	row7 '.....|.*...|....*|..*..|.....|*....|...*.|.....'
	row8 '.....|.....|.*...|....*|..*..|.....|*....|...*.'
    }
}

Widget Timer {
    class 'Icon'
    speed 50
    Bitmap {
	Row1 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
	Row2 '.***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|'
	Row3 '*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|'
	Row4 '*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|'
	Row5 '*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|'
	Row6 '.***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|'
	Row7 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
	Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'


    }
}



Widget Bgnd {
    class 'Image'
    file imgadir . 'bgndx.png'
    reload 1
    update 500
    inverted 0
    visible 1
}

Display 'DPF'

Layout layout_240x320 {

    Row02.Col01 'Heartbeat'
    Row02.Col3 'LightningTest'
    Row02.Col5 'Heartbeat'
    Row02.Col7 'EKG'
    Row02.Col9 'Karo'
    Row02.Col11 'Heart'
    Row02.Col13 'Blob'
    Row02.Col15 'Wave'
    Row02.Col17 'Squirrel'


    Row04.Col10 'Lightning'
    Row04.Col13 'Rain'
    Row04.Col16 'Timer'


    Row06.Col8 'zifu'
    Row08.Col1 'OS'



}

Layout 'layout_240x320'

Variables {
}

附件
mod--中文转txt.7z
中文转图形
(130.33 KiB) 已下载 112 次
回复