From 0fd89868855c3c7038fcc736b0448b7f6e8c8662 Mon Sep 17 00:00:00 2001
From: Yan Zhou <zhouyan@users.noreply.github.com>
Date: Thu, 2 Feb 2017 02:00:34 +0800
Subject: Fix calculation of database optical sizes

The conversion from reported design size etc., to "true `sp` value" is actually converting from `bp` to `pt`.
---
 src/luaotfload-database.lua | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/luaotfload-database.lua b/src/luaotfload-database.lua
index 4a71d34..5e4fd7a 100644
--- a/src/luaotfload-database.lua
+++ b/src/luaotfload-database.lua
@@ -1049,8 +1049,8 @@ do
     --- cf. TeXbook p. 57
     local dimens = {
         pt = function (v) return v                 end,
-        bp = function (v) return (v * 7200) / 7227 end,
-        dd = function (v) return (v * 1157) / 1238 end,
+        bp = function (v) return (v * 7227) / 7200 end,
+        dd = function (v) return (v * 1238) / 1157 end,
     }
 
     design_size_dimension = dimens.bp
@@ -1367,9 +1367,9 @@ local get_size_info do --- too many upvalues :/
             design_range_top    = ((design_range_top    or fallback_size) * 2^16) / 10
             design_range_bottom = ((design_range_bottom or fallback_size) * 2^16) / 10
 
-            design_size         = (design_size         * 7200) / 7227
-            design_range_top    = (design_range_top    * 7200) / 7227
-            design_range_bottom = (design_range_bottom * 7200) / 7227
+            design_size         = (design_size         * 7227) / 7200
+            design_range_top    = (design_range_top    * 7227) / 7200
+            design_range_bottom = (design_range_bottom * 7227) / 7200
 
             return {
                 design_size, design_range_top, design_range_bottom,
-- 
cgit v1.2.3