)]}'
{
  "log": [
    {
      "commit": "e8e45f2c05cb3b6d23f30c8f96d8e0b3699cea7a",
      "tree": "6af998e3ce59000a4edcf0a40e49e1eb9636acab",
      "parents": [
        "5d470d03df643801aa4eef11a26deee70da7b952"
      ],
      "author": {
        "name": "Doug Felt",
        "email": "dougfelt@google.com",
        "time": "Mon Mar 29 14:58:40 2010 -0700"
      },
      "committer": {
        "name": "Doug Felt",
        "email": "dougfelt@google.com",
        "time": "Wed Apr 07 14:54:51 2010 -0700"
      },
      "message": "Refactor Styled utility functions into reusable objects.\n\nThis takes utility functions from Styled and a few other classes and\nincorporates them into two new utility classes, TextLine and\nMeasuredText.  The main point of this is to support shaping by skia,\nto experiment with how this will look, this also introduces\ncharacter-based Arabic shaping.\n\nMeasuredText is used by code that determines line breaks by generating\nand examining character widths in logical order.  Factoring the code\nin this way makes it usable by the ellipsize functions in TextUtils as\nwell as by StaticLayout.  This class takes over the caching of widths\nand chars arrays that was previously performed by StyledText.  A small\nnumber of MeasuredText objects are themselves cached by the class and\naccesed using static obtain and recycle methods.  Generally only these\nfew cached instances are ever created.\n\nTextLine is used by code that draws or measures text on a line.  This\nunifies the line measuring and rendering code, and pushes assumptions\nabout how rtl text is treated closer to the points where skia code is\ninvoked.  TextLine implements the functions that were previously\nprovided by Styled, working on member arrays rather than\nexplicitly-passed arguments.  It implements the same kind of static\ncache as MeasuredText.\n\nTextLine and MeasureText simulate arabic glyph generation and shaping\nby using ArabicShaping, ported with very minor changes from ICU4J\u0027s\nArabicShaping.  This class generates shaped Arabic glyphs and Lam-Alef\nligatures using Unicode presentation forms.  ArabicShaping is not\nintended to be permanent, but to be replaced by real shaping from the\nskia layer. It is introduced in order to emulate the behavior of real\nshaping so that higher level code dealing with rendering shaped text\nand cursor movement over ligatures can be developed and tested; it\nalso provides basic-level support for Arabic.\n\nSince cursor movement depends on conjuncts whose formation is\nfont-dependent, cursor movement code that was formerly in Layout and\nStaticLayout was moved into TextLine so that it can work on the shaped\ntext.\n\nOther than these changes, the other major change is a rework of the\nellipsize utility functions to combine multiple branches into fewer\nbranches with additional state.\n\nUpdated copyright notices on new files.\n\nChange-Id: I492cb58b51f5aaf6f14cb1419bdbed49eac5ba29\n"
    }
  ]
}
