Thursday, October 19, 2017

在 macOS 上使用 IINA 播放器

本文主要为 macOS 用户介绍 IINA 这款播放器。和之前的 MPC-HC 和 PotPlayer 的教程一样,本文的目标读者是对播放器不希望太折腾,同时希望能获得较好画质的用户。

长期以来,相比 macOS 以及各种 Linux 发行版,Windows 平台上的各种视频播放工具在兼容性和播放效果上都占有显著优势。最近几年 mpv 的活跃开发大大改善了非 Windows 平台上视频播放的效果,但由于 mpv 本身没有图形界面、需要手动编写配置文件,使不熟悉命令行的普通用户难以习惯和接受。IINA 播放器可以说正是为了解决这一问题而诞生的:它基于功能强大的 mpv,使用最新的 macOS 设计语言编写了美观而友好的图形界面,为普通 macOS 用户提供了一款画质靠谱且简单易用的视频播放器。

IINA 的安装非常简单。你可以直接到 IINA 的官方网站下载最新版本安装:https://lhc70000.github.io/iina/zh-cn/

播放视频时,在画面上移动鼠标会在下方显示音量、进度条和简单的播放控制按钮。

点击齿轮图标,会在右侧显示关于视频、音频和字幕的选项。你可以在这里切换音轨和字幕。

点击列表图标,则会在右侧显示播放列表或章节信息。

你可以打开“偏好设置”,调整更为详细的选项来让 IINA 更符合你的习惯和需要,不过默认设置也足以满足大多数需求。

虽然目前 IINA 仍处于测试阶段,但经过近一年的开发已经基本稳定,可以满足日常使用。如果你在使用中遇到问题,可以通过官方网站上列出的各种联系方式向开发者提供反馈(中文也可以)。

Monday, September 18, 2017

在 Windows 10 下使用无 hinting 的 TrueType 版思源字体

我用过 GDI++ 和 MacType,终究觉得各种小毛病和始终得看微软爸爸脸色造成的烦心大过了好处,遂放弃。之后我一直坚持认为:不装 MacType 的话,Windows 下能看的简体中文字体只有微软雅黑了……直到我后知后觉发现了无 hinting 的 TrueType 版思源字体。

字体的渲染原理我不懂,只是看起来,直接把原版的思源字体(Open Type PostScript)放在 Windows 下用,效果是很糟糕的,转换成 TrueType 才能看,而且最好去掉字体中的 hinting 信息,否则小字号下会有各种扭曲变形的现象。

下面是方法。

首先把全部你需要用到的思源字体下载下来。因为接下来要用到的转换工具不支持 OTC 字体包,在浏览器上用考虑到多语言混排需要完整字形覆盖,所以我们这里选择“Language-specific OTFs”。目前思源黑体、思源宋体全部加起来一共有 64 个(包含所有语言、字重以及 HW 版本)。

转换用的工具是 otfcc。首先在这里下载已编译的 Windows 版,解压后把两个 exe 文件放在和原版字体同一文件夹内。然后安装 Node.js,需要最新的 v.8.5.0 版。随后在命令行(cmd.exe)下运行

npm install -g otfcc-c2q

来安装 otfcc-cubic2quad

接下来运行命令来转换字体就好啦,格式是这样:

otfccdump input.otf | otfcc-c2q | otfccbuild -o output.ttf

需要批量处理的话,这里提供一个(比较土的)方法:

在命令行下进入你存放字体的目录,运行

dir /b > filenames.txt

打开目录下生成的 filenames.txt 文件,通过查找替换删除所有的“.otf”(将“.otf”替换为空)。

回到命令行下,运行

for /F "tokens=*" %A in (filenames.txt) do otfccdump %A.otf | otfcc-c2q | otfccbuild -o %A.ttf

转换全部 64 个字体大约需要一两个小时的时间。转换完成后,把原版的 otf 字体删掉,把得到的 ttf 字体安装到系统中,然后用就是了。

在浏览器里我是这么设置的:简体中文、繁体中文、日文和韩文,分别使用对应语言版本的思源黑体(无衬线)、思源宋体(衬线)和思源黑体 HW(等宽)。Chrome 需要另外安装字体高级设置的扩展(Advanced Font Settings)才能分别对不同语言进行设置。另外 Chrome 目前在指定思源黑体时必须选择一个字重而不能指定字体族名,导致只能使用一个字重。这个问题有一个非常土而暴力的办法解决,详见这里

欢迎各种纠错和建议。不过,如果是“DirectWrite 是垃圾!字体糊成这样能看?”这种就算了。

Thursday, August 17, 2017

翻译练习:Growing up in science - Unofficial stories

今天意外看到了纽约大学的马伟基教授和 Cristina Alberini 教授发起的一个系列讲座,意在讲述科学家们颇为灰暗的一面——关于挣扎、失败、弯路、自我怀疑和拖延症——的故事。其网站上刊载了部分报告人的“非官方故事”作为报告的摘要,和所谓“官方故事”对比读来,实在有趣,可以说是非常真实了。故选择了其中两篇动手翻译了一下。

原文:http://www.cns.nyu.edu/events/growingupinscience/unofficial.html

Liz Phelps(2017 年 6 月 23 日)


官方故事

Liz 于 1984 年在俄亥俄卫斯理大学获得心理学与哲学学士学位,期间三次获得女子七项全能“All-American”荣誉。她选择了普林斯顿大学攻读认知心理学博士学位,但就在开学前的暑假里,她获得了一个脑损伤病人研究的实习机会,激发了她同时研究神经科学的兴趣。这次实习项目由 George Miller 和 Michael Gazzaniga 组织,两者后来分别以创建了认知科学和认知神经科学领域而闻名。在普林斯顿大学,Liz 在 Bill Hirst 和 Marcia Johnson 指导下,结合她本人对认知心理学和神经科学的兴趣,对失忆症患者的记忆进行了研究。1989 年博士毕业后,她在 Mike Gazzaniga 指导下进行了博士后研究,随后转到纽约大学 Joe LeDoux 的实验室,开始了她对于情绪与记忆方向的研究。1992 年,Liz 接受了耶鲁大学助理教授的职位,随后于 1999 年返回纽约大学就任心理学副教授。Liz 现为纽约大学“Julius Silver”心理学与神经科学教授。

非官方故事

虽然 Liz 的父母都是科学家,Liz 却从小对科学没有产生过真正的兴趣,并觉得他们都是 geek(他们真的是!)。Liz 小时候擅长运动且社交广泛,到了填报大学志愿的时候,她想也没想就选择跟随当时的男朋友去了俄亥俄卫斯理大学。在对自己想做些什么一无所知时,她意外闯进一堂哲学课,发现自己很享受思考哲学问题,诸如知识的本质或是自由意志之类;但下了课之后,又总是很沮丧,因为哲学问题从来没有答案,只有更多的问题!她还同时修了心理学课程,发现有些问题和哲学是一样的,但是心理学家们在做研究,并试图找到答案。于是 Liz 只好对自己的 geek 父母承认,大概自己也要成为一名科学家。Liz 去了普林斯顿大学跟随 Bill Hirst 研究失忆症患者的记忆。在读博期间,Liz 在失忆症患者们的家中跋涉了数千英里,这不光是因为直接在患者家中实验对他们更方便,更是因为这些患者们经常会忘记和自己有约在先。读博第二年,Liz 的导师因没能拿到终身职位被赶出了普林斯顿。与此同时,Marcia Johnson 来到普林斯顿就职,于是 Liz 转到她的实验室继续了一年,直到她离开去休长假。读博第四年,Bill Hirst 在纽约大学找到了教职,于是 Liz 也搬了过来。Liz 终于在纽约完成了自己的博士论文,期间偶尔往返普林斯顿。因为还算爱好交际,Liz 很喜欢在纽约的生活,因此当 Mike Gazzaniga 邀请她去达特茅斯做博士后时,她对于要搬去那么一个小镇这件事犹豫再三。Mike 说,你应该先来做六个月试一试,如果不喜欢,大可以离开。于是她真的离开了,尽管她喜欢和 Mike 一起工作。没了工作的 Liz 回到了纽约,Bill Hirst 让她混在自己的实验室假装有工作,同时 Mike 允许她继续远程做一些项目。她也偶尔打些短工挣钱。在此期间,James S. McDonnell 基金会为青年学者提供了认知神经科学细分领域交换训练的项目机会。Liz 就申请了其中和 Joe LeDoux 一起工作的项目,来接受更多神经科学方面的训练。Liz 第二次申请被通过了。然而,Liz 除了 fMRI 以外对研究人类杏仁核有多困难是一无所知,在 Joe 的实验室中也一无所获,倒是在蹭听的博士一年级全部课程中学到了不少。在 Joe 的实验室待了一年之后,Liz 终于在耶鲁大学找到了她研究人类杏仁核所需要的资源,并在就职耶鲁后得以建立和 Joe 的成功合作,直到今天。

Wei Ji Ma(2017 年 3 月 3 日)


官方故事

马伟基在荷兰格罗宁根大学获得博士学位。随后,他先后在加州理工学院跟随 Christof Koch 和在罗切斯特大学跟随 Alex Pouget 从事计算神经科学博士后研究。2008 至 2013 年他曾任贝勒大学医学院神经科学助理教授,随后任纽约大学神经科学与心理学副教授至今。他的研究方向为非确定状态下的感知与认知决策。

非官方故事

马伟基是个第三代荷兰移民,母亲是位典型的中国“虎妈”和 60 年代阿姆斯特丹学生运动成员。马伟基有着奇怪的童年:他 14 岁高中毕业,17 岁大学毕业,时不时被推上媒体,社交能力欠缺,自我意识膨胀。他的自信在读博期间被打破了:先是被误导(导师不行),但终究还是因为实在太难(弦论)。他抱着另一个博士生的大腿毕了业,一直觉得这博士学位不是自己的。马伟基还很三心二意,经常花在社团上的时间比在研究上还多。他做梦都没想过自己有朝一日能拿到教职。他考虑过其他职业道路,但还是决定再试着搞一次科研。博士后生涯的开始使他产生了新的宏大妄想:他说他要用统计物理学解决意识问题。回到现实中来,他和 Christof 一起的成果只有一本书的一个章节,然后到了 2004 年,Christof 无可奈何将他扫地出门。第二轮博士后,在 Alex 的鞭笞下,他终于干了些正事;但同时由于和另一位天才博士后共事,冒充者综合症再次沉重打击了他。马伟基最终拿到了教职,这要感谢刚好有足够多的人看到他的潜力,尽管没啥成果。他的拖延症至今未愈,幸好现在实际干活的都是他的学生和博士后,他才得以免于责罚。

Friday, May 26, 2017

“恋×シンアイ彼女”感想整理

发现并决定推这一作其实是因为日常逛图站时发现了刚发售不久的 visual fan book,直接被人设吸引了(某 ceo:对这个看脸选 gal 的世界绝望了!)。

先说一说剧情以外的方面:人设不用多说,担任主要角色设计的几个原画风格都是非常对我个人口味的;水月陵的配乐质量也非常高,此外我非常中意系统的音乐界面里有作者自己对音乐的解说;游戏系统就差强人意了,左下角人物头像的锯齿简直不堪入目,平移镜头时帧率不足,甚至在文本刷新时还会掉帧;制作上可以明显看出偷懒省事的地方也不少,比如 yui 线有一段挺长的穿了布偶服戴猫耳的戏,整个过程竟然连一张 cg 或是这个打扮的立绘都没有。

剧情方面,整体上有挺多地方因为缺少过渡句子,导致场景切换和剧情推进比较生硬。以下分不同角色线路具体说一说。

星奏

正宫女主的线路。终章开启前的部分一直留着悬念,小两口一个不敢问一个不肯说,就是要急死你。终章里才终于把所有悬念解开,一并放在后面详述。

彩音

彩音无论是人设还是配音都是我在这部作品里最喜欢的。一开始还以为仅仅又是一个傲娇角色,后来发现其实是个敢说敢做的孩子,更加讨人喜欢了。主动跑回来告白让我着实感动了一把(所以说不傲娇就不会死)。

彩音线的剧情在前半段和星奏线重合非常多,同时也有暗示星奏真实心意的伏笔;后半段的文本质量明显下降,读起来几乎和流水账没什么区别了,好在还有角色本身的魅力来弥补。

yui

小萝莉这条线路前半非常平淡。因为从开始一直塑造的是一个天真烂漫的小学妹的形象,结果第一个 h scene 出现时……对不起,设定改了,现在她就是一个“エッチな子”了……我的内心毫无波动甚至想笑。除了这个雷点之外,因为整条线路并没有什么出彩之处,我在半途便开始担心结局如果真的是一群人经过努力成功阻止了花坛被拆,那就是彻底的俗套了。花坛还是被拆了真是太好了(不对)。结局略有强行 he 的感觉,但确实很温馨。

从这条线后半段的剧情看,怎么都觉得小萝莉其实比男主还要成熟懂事。反观男主,身为一个写字的,居然从没有想过自己来写份请愿书?署名活动结束后“我们都这么努力了,花坛怎么会被拆毁呢”的想法是何等孩子气。

凛香

学姐感觉设定上应该是一个可靠能干的大姐姐形象,但随着感情发展又表现出种种笨拙和脱线,给我个人感觉比较迷,因而也没有什么代入感。整条线路也是非常平淡,矛盾冲突都有些破事水的感觉。

终章(星奏)

在完成前面四个线路结局之后,终于可以开启星奏线的真结局了。可以说这一部分才是整个游戏的重点。这部分的文本感觉比之前连贯了很多,男主也有了配音,再加上可能是此时男主的年龄和我自己更加接近的原因,整个终章的代入感很强。

剧情安排乐队的 leader 出来做恶人,进而把星奏悲剧的直接原因扣在“黑暗的大人世界”头上这一安排,我个人觉得是有些突兀的,因为这个不仅在前面的剧情里没有任何铺垫,和前面整体清新的风格也不搭调。造成这一问题恐怕同时还有一个原因,就是直到最后,对星奏整个心路历程都没有清楚交代,让人一时难以理解和接受星奏的选择。如果把原因的安排稍作改动,或者仅仅是对于“青涩恋爱的笨拙”多一些描写,可能就更容易让人接受。

让人感到欣慰、同时唏嘘的是,男主在终章后半段终于成熟起来了。在短暂的颓废之后,男主振作起来,做了一些自己能做的事情。是啊,“爱是恒久忍耐”;如果那是你的选择,我只好郑重接受;我会以我能做的方式继续爱你,也永远为你留着一扇门。

至于最后星奏是不是真的回来了都不重要,作品想要表达的意思都已经表达了。当然,我还是希望那是真的,因为我希望星奏能够幸福。

其他角色

这部作品中的配角也大多相当出彩,有的甚至不输四位女主角。妹妹!能干可靠的妹妹实在太棒了!妹妹的配音拿捏非常到位,可以说是本作一大亮点。家中的兄妹漫才日常非常有趣。另一位则是在终章出现的精华,小妖精一样的女孩子简直让人把持不住。值得一提的是,不知是否是作者有意,精华和星奏的名字读音有点相似(himeno sena、morino seika),而安排这个角色出现也明显有和星奏对比的意图。

Wednesday, January 18, 2017

“G線上の魔王”感想整理

g 弦上的魔王这部作品,在当年即将推出的时候就被人推荐过,也加入了想玩列表,但随后因为种种种种原因,一直拖到了……steam 版发售我才重新想起来,趁发售后不久后一次打折时买下了全套,但又觉得 steam 版删除了 h scene 以及画面被切割成 16:9 显得不完整,又抱着会出一个 18x 补丁的幻想继续等待,直到……等得不耐烦了,我直接找了盗版来玩了。

我完整通过的 gal game 一双手数得过来,这部作品的题材和内容都大大突破了我对 gal game 的认知,通关后感慨万千,意犹未尽。因为通关的整个过程里和朋友讨论过不少,觉得有必要稍微整理记录下来。因为主要目的只是记录,因此以下内容也并不讲究行文逻辑和结构了,会比较乱,当然,也有毫无遮掩的剧透。

椿姫

椿姫这孩子太纯了,这条线的 be 就活生生把这么纯的妹子给玩坏了……而在正片剧情中,椿姫一家面对其实已经是相当合理的条件,加上黑社会上门不断骚扰,却仍然只为对旧房子的感情而选择做钉子户,这样设定虽然可以理解(不然故事没法讲了),但合理性确实是一个问题。不过瑕不掩瑜,绑架案的交涉过程气氛渲染得非常好,看得人惊心动魄;男主身为椿姫的恋人却不得不谋划把对方一家赶走时的矛盾与纠结非常抓人;看似男主已经死到临头却仍然接受了椿姫最后的行为,让人叹息之时却发现男主其实早就给自己留了后路,这一点直到最后才抖出来,之前观众通过零星听到的“某人的儿子”的联络必然会理解为男主同样是在设法让椿姬一家搬出而已,剧本安排很是巧妙。

要说对剧本有什么不满的话,结尾椿姬回忆说服家人的那段戏其实可以完全删掉的,因为读者完全可以通过之前男主读日记想象到那个场景,此时展开既是重复又拖慢了紧张的节奏。而结尾又显得有点了结略草率,不过椿姬并非正宫女主大概也就这样了吧。

(男主放弃计划回到房间,椿姬跟进来,男主打开音响,air on the g string 旋律响起的时候我第一次听这个曲子听哭了……)

花音

花音是我在这部中最喜欢的角色。这大约一定和我是个妹控有关,但这种表面傻乎乎粘人撒娇,但心里非常明白,这么聪明又一直在以自己的方式努力的妹妹实在是讨人喜欢,而难过哭泣之时更是让人心生怜爱。

和母亲的矛盾是这条线的主题,我觉得很像是辉夜姬物语里小公主和她养父的矛盾,虽然有一些不同。这个矛盾主题并不新鲜,但表现得挺好的。剧情最后的结局也颇为现实:纵然有奇迹般的超常发挥,既然已经置身这游戏之中,就仍然要无声地承受它的“不公”;然而生活中充满不公,你也仍然要向前看,看到下一个希望,时来运转。

从这条线开始,剧本也开始展现出各位反派人物——诸如权三——的非邪恶的不同一面。

水羽

魔王这次刚刚有点动作引发了一次小儿科(实际上并不)一般的绑架案就沉默了,画风突然变成了校园恋爱喜剧。一直是冰冷路人形象的水羽居然是个天然害羞的少女,简直萌得出水。

但是怎么说呢,这条线里男女主的感情发展有点让人困惑。第一反应大概可以理解为男主被水羽的一片纯粹的真心打动并治愈,这种设定虽然和椿姬显得重复,但姑且说得过去;但在回忆时却又补了一段水羽任性撒娇一定程度上导致男主病倒的戏,让人对前面的第一反应又开始有所动摇,会认为男主更多是因为雪失踪前的嘱托而产生的责任感、以及对水羽的同情,而选择继续和水羽在一起;但到了临近结束时,男主又说“仅仅是同情,不会和你交往三年”,又说明还是有爱的,但是爱是因何而生呢?此外,借能够直察人心的雪之口剧本提到:能让男主感兴趣的女性,或者能治愈他(暗指椿姬),或者有非凡能力(或许暗指春但结合后面的……)和家庭背景(来说应该还是暗指花音),或者有很深的渊源(这个应该就是春),这几点即使有其中一二能勉强符合,也在剧情里几乎毫无展现,因而说男主是因为水羽成长后因为像姐姐一样了所以吸引了男主,也没有多少说服力。虽说现实中我们可以说“喜欢一个人不需要理由”,也可以理解“日久生情”,但文艺作品需要追求和读者的情感共鸣啊……所以,我觉得这条感情线处理得不好。

这条线的 be 很多人说有趣,但我其实没太明白……最后一幕应该可以理解为雪为了给妹妹报仇想尽办法,最终还是不得不通过献身的方式接近男主?那样的话为何不进了房间就动手,或者做的途中动手,却要等完事再动手?总之最后是个双双惨死的结局……



关于魔王的真实身份,剧本一直在极力诱导读者认为魔王就是男主本人。我一开始也是这么认为的,并且因为看起来魔王对身体的管理权限高于男主而男主自己却意识不到,我还产生过类似于 code geass 中鲁鲁修对自己使用遗忘命令的设定脑洞……以及会不会是别人(权三或是男主生父)在男主身上做了手脚产生的分裂人格、目的是进行某种养成这样的设定脑洞……但其实理解为同一人的话,一开始就有一处说不通,那就是男主的经历似乎比女主春要简单得多,从北海道被抓到之后应该就来这里上学了,而春则一直在追寻魔王的气息曾多次转学。直到最后两个人同时出现在同一张 cg 中,读者才恍然大悟……唔,但是这,这谁能猜到啊……

春的线路从游戏设计上来看就是放在最后,无论是剧情的丰富程度还是合理性都远超其他线路,名副其实的正宫女主。其他线路中都有明显的强行分支的突兀感,例如花音线里,西条审问了一半突然就被失手打死了;以及水羽线里,雪突然去作案杀人却没有任何解释。这样设计确实可以理解,但很多人(包括我)对此仍然不是很满意,原因也是觉得其他几条线路还是有可以完善的空间,而且,在读者不知道魔王真实身份之前还可以理解为其他线路中男主和妹子们交往后被“治愈”了,魔王的里人格也从此销声匿迹,但在知道魔王身份之后,之前的魔王直接消失就成了一个大大的剧情漏洞。

如果说之前椿姫线中的绑架事件已经惊心动魄,本线中魔王发动的恐怖事件则彻底震撼到了我,让人觉得真的置身于那个人间地域中一样。说到这里,我还想称赞一下剧本,感觉作者对于故事涉及到的内容有过相当认真的考证:对犯罪过程从准备到实施的详细描写不提,对日本黑社会以及国际雇佣兵产业生态的描绘不提,花样滑冰我也不懂,单是涉及古典音乐的情节内容,我是找不到任何专业错误的。

而本线最大的亮点,也是整部作品最大的亮点,莫过于片尾动画之后出现的真结局……本以为可以踏上新生活刚松了口气,魔王再次出现。魔王的计划可以说一次都没有失败过,男主则毅然选择承受起魔王压在他身上的最后一次试炼,“那么就由我来担起所有的罪恶吧!”。八年时间,和春之前不停追寻的十年时间比起来是要短一点,但那毕竟是十年基础上增加的八年。已经七岁而未曾谋面的女儿喊出爸爸的那一刻,迟到的救赎终于降临,让人不胜唏嘘。

如果让我来说这部作品的核心主题是什么的话,我觉得应该就是人性的善良吧。

Sunday, August 21, 2016

通过修改 EDID 信息强制 macOS 输出 full range RGB(已失效)

20170914 更新:补上一个迟来的更新。自从 macOS 也增加了 Night Shift 功能之后,这里描述的修改方式在我的系统上会触发强制变色的 bug,且无法修改,原因不明。因此,本文已无实用价值。

=======================================================


现在很多电视都支持 full range RGB (0-255)信号输入了,但是 macOS 使用 HDMI 接电视默认仍然会输出 limited (TV)range(16-235),而且无法像 Windows 上那样可以在显卡驱动设置里更改。

理论上说,显卡输出 limited range,只要电视那边也设置为接受 limited range 信号,黑位仍然是正确的,然而实际上,显卡驱动在进行 YC 压缩运算时会造成画面质量的劣化。所以,仍然有必要让 macOS 尽量使用 full range 输出。

思路:

1. 参考 EDID 定义文档,本体部分(前 128 字节)的第 24 个字节的第 4-3 比特需要改为 00,即只支持 RGB 4:4:4;

2. 扩展部分(extension block,后 128 字节)其实可以完全删除不要,但是这样会造成无法在设置中更改屏幕刷新率,所以仍然需要保留;

3. 扩展部分开头的第 3 字节的第 5、4 两位需改为 0,即 YCbCr 4:4:4、4:2:2 均不支持;

4. 加上几个 short video descriptor block,对应电视所支持的刷新率(以及你需要的分辨率),其他信息可以全部删除。

方法:

找个 EDID 编辑器,把电视的 EDID 信息拉出来,导入编辑器中,按照以上思路进行修改,然后导出,按照 MacOS 的格式编码为 plist;如果是 10.11 或以上,禁用 SIP(System Integrity Protection);把前面的文件放进 /System/Library/Displays/Contents/Resources/Overrides 下对应 VendorID 的文件夹里;重启,完工。

参考:

EDID 定义文档:https://en.wikipedia.org/wiki/Extended_Display_Identification_Data
EDID 编辑器:https://ez.analog.com/docs/DOC-2143
可以参考并魔改的 Ruby 脚本(用于抓取 EDID 信息和编码 plist 等):https://gist.github.com/adaugherity/7435890

另附上我自己的灰阶测试结果供参考:

1. 默认不做任何修改,可以看到有比较严重的 banding 和明显的颜色畸变(怀疑此时实际输出的是 YCbCr 信号);
2. 修改本体部分,删除扩展部分,灰阶表现接近完美,但无法调整刷新率(此时为正常 full RGB 信号);
3. 修改本体部分,保留扩展部分但不作修改,结果比默认有所改善,但仍有轻微 banding 可见(怀疑此时输出的是 limited RGB 信号);
4. 修改本体部分,保留扩展部分并修改第 3 字节,此时可以看出输出信号已经是 full RGB,但是很奇怪的是灰阶结果仍然和 3 相同;
5. 修改本体部分,保留扩展部分并修改第 3 字节,删除扩展部分其余所有和 SVD 无关的部分,结果终于和 2 一致了……

这也是为什么顶楼我说要把扩展部分无关部分删除的原因。具体是哪里的“多余”信息导致了显卡内部仍然做了两次转换(?)我就不知道也懒得再多做测试了。

Friday, September 25, 2015

简明屏幕校色及色彩管理

这个教程是给对屏幕校色完全不懂的“普通人”写的,内容力求傻瓜化,不讨论技术细节,简单直接达到目的,免得折腾和纠结。

校色仪买哪款

1. 首选 x-rite i1 Display Pro,精确性与速度俱佳(x-rite 的官方网店也提供出租服务);

2. 嫌上面那个贵的话,可以考虑 x-rite ColorMunki Display,速度比上面那个略慢;

3. 想尽可能便宜的话,可以买 Datacolor Spyder5EXPRESS,速度更慢,精确性也略差,但非专业用途也完全可胜任。

校色软件选哪个

请无视校色仪厂家自带的软件,直接上 DisplayCAL:https://displaycal.net/

校色步骤

0. 先是一点准备工作,恢复你的显示器设置为出厂默认,并且保证在下面步骤 6 开始前亮屏时间超过 30 分钟;

1. 点上面 DisplayCAL 官网链接,打开后点击“Get DisplayCAL”,然后在“Get DisplayCAL standalone”标题下,根据你的操作系统选择“For Mac OS X”或者“For Windows”下载相应文件并安装(Mac 下直接运行加载镜像即可);

2. 运行 DisplayCAL,软件会提示你安装 Argyll CMS,按提示下载并安装即可;

3. 如果你用的是 Spyder 系列校色仪并且使用的是 Windows,点击 Tools 菜单下的“Install Argyll CMS instrument drivers...”,并按照提示操作(过程需要重启)来禁用系统的驱动程序证书验证;

4. 把你的校色仪通过 USB 接口连接到你的电脑上,在 DisplayCAL 中选择你要校准的显示设备,然后点击右边的蓝色小按钮,随后按钮右侧会显示你连接的校色仪名称,并会弹出提示让你加载校色仪的修正文件,按照提示安装相应的修正文件,然后在显示的校色仪右边的“Mode”(如果你用的是 Spyder 系列)中,或是在下方的“Correction”(如果你用的是 x-rite 产品)中根据你使用屏幕的类型选择对应的项目,例如现在最常见的屏幕是白色 LED 背光的 LCD;

5. 在界面顶部的“Settings”中选择“Office & Web (D65, Gamma 2.2)”,然后点最下面的“Calibrate & profile”按钮;

6. 参考校色仪附带的说明书,把校色仪挂在屏幕上,测量部位大约对准新弹出的窗口中心,然后点击“Start measurement”,如果你校正的是台式显示器并且提供了分别调节红绿蓝三色的功能的话,按照实时返回的测量结果把三色调节平衡,否则只需要把屏幕亮度调节到你觉得合适的水平即可(一般以 100-150 cd/m2 为宜);

7. 调整完成后点击“Stop measurement”按钮,然后点击右边的“Continue on to calibration”按钮,接下来的过程会持续 30- 150 分钟不等,期间请保持周围环境光强度没有大的变化;

8. 校色过程完成后会弹出窗口提示结果,点击“Install profile”,取下校色仪,收工。

浏览器设置

1. Chrome 从 62 版本开始已经支持并默认启用完整的色彩管理,不需要额外设置,然而 Chrome 的色彩管理和 macOS 上有非常相似的 bug,即不能正确处理除 single curve+matrix 以外形式的 profile,所以如果你是在 Windows 下使用 Chrome 浏览器,请在上面校色步骤 5 中切换到“Profiling”一栏,把“Amount of patches”滑块移动到最左端;

2. Firefox 目前不支持视频的色彩管理,只能正确处理图片,并且需要一点设置。方法是打开 about:config,搜索“color_management”,将“gfx.color_management.enablev4 ”改为“true”,将“gfx.color_management.mode”改为“1”,然后重启即可;

3. Safari(macOS)支持并默认启用完整的色彩管理,不需要额外设置。

看图应用设置

看图软件太多啦,我没有一一测试过。这里只把 XnView MP 作为例子来说一下:打开 XnView MP 的 Settings - General - ICC,勾选 “Use ICC profile for monitor (slower)”,选择“System”,然后下方的“Default profile of picture”选择“sRGB”。

Photoshop 自带完整的色彩管理系统,一般情况下不需要进行额外设置。

顺便说,Windows 10 自带的“Photos”应用,可以识别图片中的 profile,但只会将其转换到 sRGB,而不会理会我们通过校色得到的 profile ;macOS 下的 Preview 应用支持色彩管理,但图片暗部细节和其他应用(Photoshop、Safari 以及正确配置后的 XnView MP)有轻微差异,原因不明,怀疑是 bug。

mpv/IINA

1. mpv 只需要在配置文件(mpv.conf)中增加一行“icc-profile-auto”即可;

2. IINA 需要打开 Preferences - Advanced,在“Additional MPV options”中添加一行,Name 为 “icc-profile”,value 为你的 icc profile 所在位置,不出意外的话应该是类似“~/Library/ColorSync/Profiles/xxx.icc”的形式。

madVR

1. 在 DisplayCAL 界面顶部的“Settings”中选择之前校色得到的 icc 文件名,然后在 Options 菜单中勾选“Enable 3D LUT tab”和“Show advanced options”;

2. 下面切换到 3D LUT 一栏,取消勾选“Apply calibration (vcgt)”,“3D LUT file format”选择“madVR (.3dlut)”,其他选项不需要更改;

3. 点击最下方的“Create 3D LUT...”按钮,开始生成 3dlut 文件,完成后点击“Install 3D LUT”按钮,完成;

4. 如果因为某些原因导致 3D LUT 没有正常自动安装,手动安装的方法是进入 madVR 设置,在 devices - 你的屏幕设备名 - calibration 中,选择“calibrate this display by using external 3DLUT files”,确保“disable GPU gamma ramps”未勾选,然后点击下方“BT.709”那一行右侧的黄色文件夹图标,指定为刚才得到的 3dlut 文件的位置。

Q&A

Q:我不想折腾,直接把别人在同型号显示器上的校色文件拿来用可以么?

A:可以试试,但不要指望准确,得到更差的结果也完全不奇怪。

Q:为什么不使用光度计?

A:x-rite i1 Display Pro 足以满足普通人的需要,包括目前各种常见的广色域屏幕。

Q:为什么不推荐其他更高级的蜘蛛(Spyder)型号?

A:所有同代 Spyder 的型号 sensor 都是一样的,更高级的型号只是在配套软件上有区别;我们这里已经直接放弃了配套软件,使用功能全面且免费的 DisplayCAL 了,所以更高级的 Spyder 没有意义。

Q:我不喜欢 DisplayCAL 的 profile loader 随 Windows 开机启动并一直运行,能不用它么?

A:可以,但是不推荐。如果不是因为 Windows 自带的色彩管理程序垃圾到了匪夷所思的地步,估计 DisplayCAL 的作者也不至于非要蛋疼单独写个 profile loader 出来。Windows 自带色彩管理程序的问题主要在于当屏幕数量大于一个时,只有在扩展桌面模式下能把不同的 profile 正确应用在对应的屏幕上,其他模式下的颜色都是错误的,而且在模式间切换时几乎总是会导致颜色错误;此外在加载校正曲线时的算法也有错误。如果你只有单个屏幕且不在乎精度损失,可以在安装 DisplayCAL 时选择“Let the operating system handle calibration loading”,如已经安装则打开 Windows Color Management - Advanced,点击最下方的“Change system defaults”,新窗口中的 Advanced - Display Calibration 下勾选“Use Windows display calibration”,并在 Windows Task Scheduler 中禁用 DisplayCAL Loader Launcher。

Q:为何在创建 3D LUT 时要取消勾选默认的“Apply calibration (vcgt)”?

A: 原因详见下面 20170915 更新说明。DisplayCAL 默认选择将此选项勾上的原因是为了利用 madVR 更高精度的内部运算和抖动处理,避免显卡 gamma table 校正造成的精度损失。如果你不在意我说的几点使用体验上的不足,一定要追求尽可能高的画质,请按照 DisplayCAL 默认那样勾选“Apply calibration (vcgt)”,甚至不嫌麻烦的话,从上面校色步骤的第 5 步开始,选择“Video 3D LUT for madVR (D65, Rec. 709 / Rec. 1886)”重新挂上校色仪测量一遍,获得一个精度更高的 profile。

===========================================================================

20180516 更新:为了避免 macOS 上的 bug,DisplayCAL 3.5 开始在 macOS 上默认设置即为 single curve+matrix,所以这里去掉了这个步骤。

20171114 更新:更新了关于 Chrome 的色彩管理部分,本想说可喜可贺 Chrome 终于支持色彩管理了,结果发现和 macOS 一样的 bug,这到底是 bug 还是 feature……此外添加了 Photoshop 和 Windows、macOS 自带默认图片查看应用的情况。

20171024 更新:修改了部分在 macOS 上的校色步骤。macOS 系统的色彩管理(ColorSync)在处理非 single curve + matrix profile 时存在严重的 bug,会导致很多地方(尤其是 macOS 自带的 Preview)暗部颜色被挤压(crushed)。这个 bug 应该是自从 10.11(El Capitan)开始出现,目前在 10.13(High Sierra)上仍然存在。如果你已经按照以前的方法创建了 icc profile 不想重新跑一遍,可以按照新增的校色步骤 5.2 中进行调整之后,在 File 菜单中选择“Create profile from measurement data...”,然后选择你目前的 icc 文件,保存为一个不同的文件名,然后安装新的 icc profile 即可。此外,增加了一条关于 3D LUT 的 Q&A。

20171022 更新:修改了浏览器和看图软件部分中和 macOS 相关的内容。macOS 系统的色彩管理颇有点微妙,我会另外撰文细说。

20170915 更新:重写了关于 madVR 的 3D LUT 设置方法,改为直接由前面得到的 icc profile 生成,且 3D LUT 中不包含 vcgt 信息;增加了一条 Q&A 。前思后想之后,我还是觉得默认的用 madVR 的 pattern generator 重跑一遍的方式太冗长了,所以改成了直接由 icc 文件生成。至于为什么要打开高级选项,取消掉 DisplayCAL 默认勾选的包含 vcgt,原因如下:1. 3D LUT 中包含 vcgt 的话,madVR 启动时就必须将已加载的曲线重置,这会导致在 madVR 启动打开视频的瞬间屏幕颜色突变(特别是如果屏幕本身在加载校正曲线前后差别较大时),同样,在播放视频结束后两秒左右,DisplayCAL profile loader 会再次加载校正曲线,屏幕颜色再次突变,使用体验不好;2. 并不是所有人、所有时候都使用全屏幕观看视频,因此当 3D LUT 中包含 vcgt 时,校正状态被重置,此时视频的颜色是正确的,但其他部分的颜色就都是错误的了。3D LUT 中不包含 vcgt 信息的话,校正曲线始终保持(也必须保持)加载状态,开始和结束播放视频时不会有颜色突变,而且能保证视频和其他桌面部分的颜色都是正确的。

20170914 更新:增加了关于浏览器、看图应用和 mpv/IINA 的设置,增加了 Q&A 部分。

20161022 更新:修订了关于加载校色仪修正文件的部分(我之前的理解有误);增加了为 madVR 制作 3D LUT 的步骤。

20160821 更新:更新了 displaycalGUI 的名称(改名为 DisplayCAL)和官网地址,以及安装过程按照最新版做了一点点简化。