Skip to content

0.14.3_new_features

Pre-release
Pre-release
Compare
Choose a tag to compare
@fxliang fxliang released this 18 Mar 07:59
· 420 commits to master since this release

已经有合入主仓,主仓还有其他给力更新,后续请直接从主仓的master新构建里更新吧
ci

===============
据说之前的有bug,用这个下面的构建输出吧

最新构建包在这里,下载对应的 artifact压缩包(你需要有GitHub账号登陆),里面有安装文件

后续应该不太会怎么做release,直接在主仓github action下更新吧
如果您是从原厂版本0.14.3升级安装而来,又未在安装前切换到其他输入法,潜在可能安装完成后,原来的应用程序切换到小狼毫时因为新增参数造成的内存不对齐问题造成应用程序崩溃,形成类似试试就逝世的感觉
安装前建议先关闭相关应用程序 ,备份关键数据,切换到其他输入法,安装后建议重新登陆一下系统或者重启系统。

如果您在原厂0.14.3版本应用下,样式使用了带透明度描述的颜色数值(0x后有大于6个十六进制数值),如0x7fffffff, 对应的颜色潜在会产生异常,这个是原厂对颜色值未做异常处理产生

整理汇总

新特性:

  • 候选窗口圆角

  • 抛弃GDI绘制文字,仅支持Windows 8.1或以上版本系统. 主要原因:1)GDI文字绘制无法支持精细的字体回退控制,2)实现圆角窗口所需 layeredwindow 下GDI绘制文字效率极低(每次_TextOut调用就要进行一次图片alpha运算和图像复制…);

  • 支持自定义字体回退顺序,字体回退顺序可根据字体设置执行,可定义各个字体的生效范围,一个字体可以定义多个分段范围

  • 字体支持设置字重,字形风格 ,在字体设置的第一个分组定义、不区分大小写,在字体支持的情况下最多16种字重,3种字形风格

  • 彩色字体支持,Windows 10 周年构建版之前的系统,需要使用COLR格式的彩色字体,之后的版本可使用SVG字体

  • Windows 10或者Windows 11(构建版本不大于22000)下可使能窗口背景模糊(毛玻璃效果),可在style/blur_window中设定或者preset_color_schemes/xxx/blur_window 设置, 优先后者(方便配色分组组合),后者设置会覆盖前者的设置;当设置窗口模糊时,shadow_color 失效(透明),背景色alpha如大于0x7f则自动设置为0x7f. 如果某版本系统下失效,责任在于MS

  • 标签,注解字体可独立定义,字号可独立定义,如果字号设置为0则直接隐藏

  • 支持半透明颜色 格式 0xaabbggbb,旧配置中的0xbbggrr会被解析成0xffbbggrr

  • 新增在配色中设定颜色顺序格式(只影响对应的配色组),方便在vscode 之类的编辑器下预览颜色或从其他取色软件中获取取色值,默认abgr(与旧样式兼容,顺序0xaabbggrr),可选argb/rgba(小写), 分别对应格式顺序0xaarrggbb和0xrrggbbaa。

  • 控制hex格式的颜色代码,支持

    0xabc(根据颜色格式定义展开成0xffaabbcc或者0xaabbccff)
    0xabcd(展开成0xaabbccdd)
    0xaabbcc(根据颜色格式定义展开成0xffaabbcc或者0xaabbccff),
    0xaabbccdd
    

    其余hex状态会被否决抛弃

  • 阴影特性,编码/高亮候选/普通候选/输入窗口 均可设置独立阴影色,可定义dropshadow偏置距离,默认透明不绘制,全屏下不绘制。

  • 重构布局相关计算,新增竖直文字布局,可定义流向(flow direction),可定义是否超长换行显示

  • 支持多行候选(使用\r换行)内容的显示,定义max_width或者max_height时,文本超长可自动折行/列显示

  • 天圆地方特性,全部布局(除全屏布局外)均支持,条件是高亮色块超出候选框。

  • margin_x 或者 margin_y设置负值时,隐藏输入窗口,不影响方案选单/tips的显示

  • 新增一个preedit_type : preview_all, 可配合隐藏窗口 和inine_preedit 使用

  • 新增参数,实现类似Windows 11 系统自带输入法的高亮提示标记,标记符号可自定义,默认无内容,透明

  • 新增参数,实现候选边框颜色绘制,默认透明不绘制

  • 新增参数,实现方案中文图标在切换时显示

  • 新增特性,支持浅色主题深色主题切换自动响应

  • 新增半角,全角图标,新绘制高清weaselserver图标

  • 模拟发送数字键实现鼠标点击选词,非数字选词未确认;支持鼠标滚轮翻页;支持鼠标点击翻页标识翻页,需 style/inline_preedit: false 且指定上翻下翻配色均非透明,见文末prevpage_color和nextpage_color处;

  • 鼠标点击截图功能,点击高亮候选截图高亮候选,其他截图整个候选窗口。

  • 支持设定窗口检索user_data_dir\preview目录下的配色预览图

  • github 自动构建,使用librime 1.8.5,修复上游文件路径变化引起的构建失败问题

修复:

  • 候选文字过长时崩溃
  • 使用较新的librime(如librime 1.7.3)时,如果用户目录下没有default.custom.yaml或者weasel.custom.yaml的情况下设定窗口无法弹出
  • 全局style/inline_preedit: false, 方案style/inline_preedit: true时,每次部署结束或重启算法服务可能会引起inline_preedit后有异常表现
    9U{26}`6T9)$)F6JN$NLN7

改善:

  • 减少ui对象重复销毁和创建,一个session只创建一次
  • 减少窗口重绘次数降低闪烁
  • 多屏DPI变化时自适应大小调整

WeaselCommon.h中预编译控制部分特性开关

#define USE_BLUR_UNDER_WINDOWS10     // 毛玻璃特性
#define USE_HILITE_MARK                            // 高亮候选标识特性
#define USE_CANDIDATE_BORDER               // 候选border特性
#define USE_MOUSE_EVENTS                       // 鼠标事件特性
//#define USE_THEME_DARK                        // 使用暗色主题响应,目前未实现全自动响应,暂默认禁用
//#define CLIP_SHADOW_UNDER_BACK_COLOR   // 选择是否剪裁前景色下的阴影
//#define USE_MOUSE_HOVER                     // 鼠标悬停特性
//#define USE_SHARP_COLOR_CODE           // color 支持css风格定义特性  "#aabbggrr"
#define USE_PAGER_MARK                           // 翻页提示标识特性

新增特性相关参数如下

# all font can be set with range
# spaces around , and :  will be trimmed.
# font name must be the first in every font set unit.
# start code point must before last code point, in HEX, if not set, range [0, 0x10ffff] 
# to define start and end point like this 
#   fontname : start_code_point : end_code_point
# to define start code point only like this
#   fontname : start_code_point
# to define end code point only like this
#   fontname : : end_code_point
#
# *** font weight / style must be set in the first font set unit, with [: weight_set] [:style_set]
# e.g.,
# style/font_face: "Segoe UI Emoji : 20 : 39 : bold : italic , Segoe UI Emoji:1f51f:1f51f, Noto Color Emoji SVG:80, Arial:600:6ff, Segoe UI Emoji:80, LXGW Wenkai Narrow"
# 
# font weight, you should check if your font support that weight
# weight(defalt normal if not set, case insensitive):
# 	thin extra_light ultra_light light semi_light medium demi_bold semi_bold bold extra_bold ultra_bold black heavy extra_black ultra_black normal
# 
# style(defalt normal if not set, case insensitive):
# 	italic oblique normal
#
# make main font after some symbol fonts, to ensure symbol show in the right font, if you want specify the symbol font
style/font_face: "Segoe UI Emoji:20:39, Segoe UI Emoji:1f51f:1f51f, Noto Color Emoji SVG:80, Arial:600:6ff, Segoe UI Emoji:80, LXGW Wenkai Narrow"
style/label_font_face: "Segoe UI Emoji:20:39, Segoe UI Emoji:1f51f:1f51f, Noto Color Emoji SVG:80, Arial:600:6ff, Segoe UI Emoji:80, LXGW Wenkai Narrow"
style/comment_font_face: "Segoe UI Emoji:20:39, Segoe UI Emoji:1f51f:1f51f, Noto Color Emoji SVG:80, Arial:600:6ff, Segoe UI Emoji:80, LXGW Wenkai Narrow"
style/label_font_point: 14      # label font point
style/comment_font_point:   14  # comment font point 
style/blur_window: false    # 仅支持 windows 10 or windows 11 (build number <= 22000),其余未测试;
# seting it up in color scheme would be a better option, more portable. it will disable shadow_color and make back_color alpha between 01~7f
style/layout/align_type: center         #  options: top, center, bottom , for the situation when label_font_point, font_point, comment_font_point not the same.
# for vertical text layout, 'top' redirect to the direction where your preedit is.
style/vertical_text: false      # set true to use vertical text layout, 
style/vertical_text_left_to_right: false    # flow direction setting for vertical text layout
style/vertical_text_with_wrap: false        # vertical text layout with wrap-whole-candidate feature, work with style/vertical_text: true  and style/layout/max_height: not_zero_value
style/mark_text: ""         # mark text in front of highlighted candidate's label, to make view like windows 11 ime style. if you want this work, mark_text must not be empty and hilited_mark_color must not be transparent
#style/color_scheme_dark: lost_temple    # color theme for system dark theme, not very good now, feature default disabled 
style/layout/max_width: 0   # max window width for horizontal layout, set 0 to disable max width; strings over this value will wrap to next row, candidates's right over this value will be turn to next row(when horizontal layout). if over length, multi row for candidates
style/layout/max_height: 0  #  max window height for vertical text layout with wrap, set 0 to disable max height; string over this value will wrap, candidate's bottom over this value will be turn to next column(when vertical_text_with_wrap) 
style/layout/shadow_radius: 0   # shadow radius, blur level for shadow, should be a integer not too large, maybe 5 to 10 is ok enough. set 0 to disable shadow feature
style/layout/shadow_offset_x: 4     #drop shadow offset x axis, if shadow_offset_x and shadow_offset_y both 0, round shadow. positive to dropshadow right, negative to dropshadow left. similar does shadow_offset_y
style/layout/shadow_offset_y: 4
style/layout/corner_radius:  4  # corner radius of candidate window
#style/layout/type: vertical  # add option vertical_text, defalt not set
style/preedit_type: composition  # new option preview_all
#preset_color_schemes/xxx/color_format:  rgba  #defalt not set, rgba or argb optional
preset_color_schemes/xxx/hilited_mark_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/hilited_shadow_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/shadow_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/candidate_back_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/candidate_shadow_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/candidate_border_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/hilited_candidate_shadow_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/hilited_candidate_border_color: 0x00000000 #defalt transparent
preset_color_schemes/xxx/prevpage_color: 0x00000000 #default transparent
preset_color_schemes/xxx/nextpage_color: 0x00000000 #default transparent
# if both prevpage_color and nextpage_color not transparent, pager mark button will be shown when no inline_preedit
schema/icon: schema_ico.ico   #icon file under user dir or program data dir. it should be set in schema custom files,e.g., 
#wubi091.custom.yaml
#patch:
#      schema/icon: 09wubi.ico

彩色文字,阴影,超长多行horizontal布局
image
字体粗斜体
image

竖排文字布局
image
竖排文字布局左至右流向
image
竖列超长换列布局
image

超长文字(滕王阁序)
image

天圆地方
image

image

margin负数隐藏窗口+preview_all
previewall

输入方案图标
schema_icon

鼠标响应:滚轮+点击
mouseevt

DPI动态适应
dpi

设置窗口引入用户目录下图片
preview_picture_in_user_data_dir