import comtypes\r
import comtypes.client\r
import oleacc\r
+import colors\r
import api\r
import speech\r
import sayAllHandler\r
\r
def _getFormatFieldAndOffsets(self,offset,formatConfig,calculateOffsets=True):\r
formatField=textInfos.FormatField()\r
- startOffset,endOffset=self._startOffset,self._endOffset\r
- if startOffset==0 or self._getTextRange(offset-1,offset).startswith('\n'):\r
- b=self.obj.ppObject.textRange.characters(offset+1,offset+1).paragraphFormat.bullet\r
+ curRun=None\r
+ if calculateOffsets:\r
+ runs=self.obj.ppObject.textRange.runs()\r
+ for run in runs:\r
+ start=run.start-1\r
+ end=start+run.length\r
+ if start<=offset<end:\r
+ startOffset=start\r
+ endOffset=end\r
+ curRun=run\r
+ break\r
+ if not curRun:\r
+ curRun=self.obj.ppObject.textRange.characters(offset+1)\r
+ startOffset,endOffset=offset,self._endOffset\r
+ if self._startOffset==0 or offset==self._startOffset and self._getTextRange(offset-1,offset).startswith('\n'):\r
+ b=curRun.paragraphFormat.bullet\r
bulletText=getBulletText(b)\r
if bulletText:\r
formatField['line-prefix']=bulletText\r
+ font=curRun.font\r
+ if formatConfig['reportFontName']:\r
+ formatField['font-name']=font.name\r
+ if formatConfig['reportFontSize']:\r
+ formatField['font-size']=str(font.size)\r
+ if formatConfig['reportFontAttributes']:\r
+ formatField['bold']=bool(font.bold)\r
+ formatField['italic']=bool(font.italic)\r
+ formatField['underline']=bool(font.underline)\r
+ if font.subscript:\r
+ formatField['text-position']='sub'\r
+ elif font.superscript:\r
+ formatField['text-position']='super'\r
+ if formatConfig['reportColor']:\r
+ formatField['color']=colors.RGB.fromCOLORREF(font.color.rgb)\r
return formatField,(startOffset,endOffset)\r
\r
class Table(Shape):\r