最新 | 最热门 | 最高评价

+0  预告:从解释器到抽象解释

Typeof 发于 1970年01月01日 08:00 | 点击: 17925 | 展开摘要
function interpret(form, env, ctx){
if(form instanceof Array){
switch(form[0]){
case 'lambda': {
var params = form[1];
var body = form[2];
return ctx(function(ctx){ return function() {
var e = Object.create(env);

查看全文: http://www.udpwork.com/item/15717.html

+0  Introducing otfcc

Typeof 发于 1970年01月01日 08:00 | 点击: 853 | 展开摘要
尽管 node-sfnt 本身十分适合在 Node 中处理 ttf,然而我还是不满意,主要是两点:

node-sfnt 只能读取 CFF,无法写入 CFF;

node-sfnt 对于 OpenType Features 完全不支持;

node-sfnt 的性能很成问题,处理大文件非常慢,偏偏 Inziu Iosevka 的文件的都不小

综合这三点之后,经过和李阿玲的讨论,决定使用 C 制作两个单独的程序,用来处理 OpenType 格式的序列化和反序列化:

otfc

查看全文: http://www.udpwork.com/item/15449.html

+0  一百六十五夜

Typeof 发于 1970年01月01日 08:00 | 点击: 890 | 展开摘要
一百六十五夜

七月十九日,我开始制作 Iosevka。2015 年即将结束的今天,是第一百六十五夜。

起初我只是觉得 M+ 对于各种字符(比如 IPA)的支持率很低,许多 Feature 支持都欠奉(如 mark);而支持字符多的等宽字体又不是半角(导致写文档很容易乱掉排版),正好当时发现了百度的 fonteditor-ttf,一个完成度极高的 SFNT 读写库,就起了编程制作开源等宽字体(Monospaced Typeface)的心思。

一百六十五夜后,它成了包含超过

查看全文: http://www.udpwork.com/item/15094.html

+0  指针的 Hoare Logic:Separation Logic

Typeof 发于 1970年01月01日 08:00 | 点击: 1197 | 展开摘要
Hoare Logic 是证明程序正确性的法宝,具体而言,它给出了逐步推理程序正确性的方法。Hoare Logic 使用符号 brace: P :brace ~e~ brace: R :brace{P} e {R} 表示程序步骤 e bfe 执行前后的行为:若断言 PP 在执行前成立,则 e bfe 执行后断言 RR 成立。一些推理规则是很显而易见的:比如

{brace: P :brace ~ e~ brace: Q :brace quad brace: Q :brace

查看全文: http://www.udpwork.com/item/14215.html

+0  Chrome 可以正确对中文作齐头尾了

Typeof 发于 1970年01月01日 08:00 | 点击: 1122 | 展开摘要
最近的新发现:Chrome 在不知道多少年之后,text-align: justify 终于晓得在汉字之间增加空白了。各位可前往 Simplified Chinese Line Breaking Rules Test 自行测试。

不过仍然发现了问题:设置 Opentype Feature 之后这种特性就消失了,唉,可能是还没处理这部分吧。

2015-5-6 更新:Chrome 似乎在版本 42 之后,开 Feature 也能正确处理了,删掉上面那段话。

查看全文: http://www.udpwork.com/item/14036.html

+0  六离合释:健康宏展开的故事

Typeof 发于 1970年01月01日 08:00 | 点击: 1184 | 展开摘要
本文同步发布至 知乎专栏。

今受 @RednaxelaFX 的邀请,到此地方来,本打算像写书那样,写个长的系列,唤作《六离合释》,借个 Panini 文法里的词来说语言理论,不过写书我实在是坚持不下来,所以还是东一榔头西一棒子地讲一些小的细节好了。

给程序语言设计宏系统实际上是挺麻烦的事。C/C++ 的宏实际上就是 token 层面的查找替换,早期的 lisp 要更好些,是在 AST 层面的查找替换,由于 lisp 的节点可以随意组合、文法统一,所以在人们眼里 lisp

查看全文: http://www.udpwork.com/item/13941.html

+0  Danvy 的简化 CPS:超过 40 行的解释

Typeof 发于 1970年01月01日 08:00 | 点击: 876 | 展开摘要
这篇文章是来解释某 PL 界巨擘引以为豪的 40 篇代码的来龙去脉的。

Fischer 和 Plotkin 奠基性的文章里,CPS 的结果语句是非常冗繁的。它们的方法会把表达式

lambda f. lambda x. lambda y. (f~y)~xλf. λx. λy.(f y) x

变成

lambda k. k "(" lambda f. lambda k. k "(" lambda x. lambda k. k &quo

查看全文: http://www.udpwork.com/item/13570.html

+0  用于 CSS 数学排版的一个行内元素砌块

Typeof 发于 1970年01月01日 08:00 | 点击: 961 | 展开摘要
在网页上排版数学公式一直是个麻烦事。依我的个性使用 Mathjax 处理是不可能的,相反我在这个过程里制作了一个简单的行内元素砌块,可以有效地用于公式排版。

作为公式排版的泰斗,T rm kern `-0.166` E rm justraise `-0.25` kern `-0.166` X rmT{E}X 中用于公式内各个部件组合的关键元素是所谓「盒子」(Box)。每一个盒子都有其高度(Height)和深度(Depth),而数学公式就是这些盒子的组合。可以看到,对于简单的

查看全文: http://www.udpwork.com/item/13530.html

+0  准备重新操起 Nosh

Typeof 发于 1970年01月01日 08:00 | 点击: 806 | 展开摘要
现在过的这种浑浑噩噩的生活不能再继续下去了,然考虑到 patrisika 工作已经接近完成,PatEL 也基本上完成(估计能做的也就只有加 KFFD 支持宏了吧……)。嗯,打算重新操起 Nosh。

Nosh 之前一直想做,不过也一直坑着没做下去。它是用 Node 写的 shell,地位是类似 Powershell 这种的:它内部有一个完整的变成体系,而不是「把一切都看作字符串」这样草率而粗暴地处理。Nosh 的文法实际上很不好设计的,因为 Shell 为了省卡路里是必须什么

查看全文: http://www.udpwork.com/item/13430.html

+0  sfdhanautohint:汉字的 gridfit 解决方案

Typeof 发于 1970年01月01日 08:00 | 点击: 1126 | 展开摘要
长久以来,由于汉字的复杂性和庞大数量,汉字字体的屏幕优化一直是极度消耗劳动力的工作,其在低分辨率下的可读性一直很差。sfdhanautohint 将提供自动化的处理手段,以最终解决这个问题。优化的方法是调整笔画(Stem,文字中横向或者竖向的矩形区域,sfdhanautohint 目前只处理横向)的位置和宽度,来优化显示效果。从轮廓中找出笔画的方法已经比较成熟了,sfdhanautohint 是先找出所有的水平线段,然后判断哪些线段对可以笔画。

sfdhanautohint

查看全文: http://www.udpwork.com/item/13226.html

+0  预告:从解释器到抽象解释

Typeof 发于 1970年01月01日 08:00 | 点击: 986 | 展开摘要
function interpret(form, env, ctx){
if(form instanceof Array){
switch(form[0]){
case 'lambda': {
var params = form[1];
var body = form[2];
return ctx(function(ctx){ return function() {
var e = Object.create(env);

查看全文: http://www.udpwork.com/item/12283.html

+0  sfdhanautohint:汉字的 gridfit 解决方案

Typeof 发于 1970年01月01日 08:00 | 点击: 998 | 展开摘要
长久以来,由于汉字的复杂性和庞大数量,汉字字体的屏幕优化一直是极度消耗劳动力的工作,其在低分辨率下的可读性一直很差。sfdhanautohint 将提供自动化的处理手段,以最终解决这个问题。优化的方法是调整笔画(Stem,文字中横向或者竖向的矩形区域,sfdhanautohint 目前只处理横向)的位置和宽度,来优化显示效果。从轮廓中找出笔画的方法已经比较成熟了,sfdhanautohint 是先找出所有的水平线段,然后判断哪些线段对可以笔画。

sfdhanautohint

查看全文: http://www.udpwork.com/item/12258.html
|<<<123456>>>| 一共6页, 61条记录