toxiclibs 0.2-java → 0.5.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/CHANGELOG.md +4 -0
- data/LICENSE +675 -0
- data/README.md +12 -5
- data/Rakefile +25 -82
- data/examples/attract_repel/attract_repel.rb +30 -0
- data/examples/attract_repel/attractor.rb +23 -0
- data/examples/attract_repel/particle.rb +27 -0
- data/examples/data/ti_yong.png +0 -0
- data/examples/force_directed/cluster.rb +76 -0
- data/examples/force_directed/force_directed_graph.rb +92 -0
- data/examples/force_directed/node.rb +26 -0
- data/examples/gray_scott_image.rb +75 -0
- data/examples/gray_scott_tone_map.rb +77 -0
- data/examples/implicit.rb +139 -0
- data/examples/inflate_mesh.rb +89 -0
- data/examples/model_align.rb +44 -0
- data/examples/povmesh/ftest.rb +46 -0
- data/examples/povmesh/tentacle.rb +73 -0
- data/examples/simple_cluster/cluster.rb +47 -0
- data/examples/simple_cluster/node.rb +27 -0
- data/examples/simple_cluster/simple_cluster.rb +60 -0
- data/examples/soft_body/blanket.rb +45 -0
- data/examples/soft_body/connection.rb +16 -0
- data/examples/soft_body/particle.rb +22 -0
- data/examples/soft_body/soft_body_square_adapted.rb +55 -0
- data/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +91 -32
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.xml +122 -0
- data/src/com/toxi/net/ClientListener.java +41 -0
- data/src/com/toxi/net/ServerListener.java +70 -0
- data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
- data/src/com/toxi/net/ServerState.java +18 -0
- data/src/com/toxi/net/UDPConnection.java +66 -0
- data/src/com/toxi/net/UDPSyncClient.java +81 -0
- data/src/com/toxi/net/UDPSyncServer.java +450 -0
- data/src/com/toxi/nio/UDPClient.java +121 -0
- data/src/com/toxi/nio/UDPClientState.java +32 -0
- data/src/com/toxi/nio/UDPServer.java +129 -0
- data/src/toxi/color/AccessCriteria.java +114 -0
- data/src/toxi/color/AlphaAccessor.java +67 -0
- data/src/toxi/color/CMYKAccessor.java +122 -0
- data/src/toxi/color/CMYKDistanceProxy.java +40 -0
- data/src/toxi/color/ColorGradient.java +260 -0
- data/src/toxi/color/ColorList.java +699 -0
- data/src/toxi/color/ColorRange.java +671 -0
- data/src/toxi/color/ColorTheme.java +163 -0
- data/src/toxi/color/DistanceProxy.java +44 -0
- data/src/toxi/color/HSVAccessor.java +113 -0
- data/src/toxi/color/HSVDistanceProxy.java +40 -0
- data/src/toxi/color/HistEntry.java +85 -0
- data/src/toxi/color/Histogram.java +185 -0
- data/src/toxi/color/Hue.java +249 -0
- data/src/toxi/color/LuminanceAccessor.java +78 -0
- data/src/toxi/color/NamedColor.java +935 -0
- data/src/toxi/color/ProximityComparator.java +70 -0
- data/src/toxi/color/RGBAccessor.java +113 -0
- data/src/toxi/color/RGBDistanceProxy.java +41 -0
- data/src/toxi/color/ReadonlyTColor.java +296 -0
- data/src/toxi/color/TColor.java +1677 -0
- data/src/toxi/color/TColorAdapter.java +68 -0
- data/src/toxi/color/ToneMap.java +218 -0
- data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
- data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
- data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
- data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
- data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
- data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
- data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
- data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
- data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
- data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
- data/src/toxi/data/csv/CSVAdapter.java +74 -0
- data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
- data/src/toxi/data/csv/CSVListener.java +61 -0
- data/src/toxi/data/csv/CSVParser.java +202 -0
- data/src/toxi/data/feeds/AtomAuthor.java +49 -0
- data/src/toxi/data/feeds/AtomContent.java +50 -0
- data/src/toxi/data/feeds/AtomEntry.java +111 -0
- data/src/toxi/data/feeds/AtomFeed.java +129 -0
- data/src/toxi/data/feeds/AtomLink.java +62 -0
- data/src/toxi/data/feeds/RSSChannel.java +88 -0
- data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
- data/src/toxi/data/feeds/RSSFeed.java +99 -0
- data/src/toxi/data/feeds/RSSItem.java +104 -0
- data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
- data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
- data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
- data/src/toxi/geom/AABB.java +658 -0
- data/src/toxi/geom/Axis3D.java +116 -0
- data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
- data/src/toxi/geom/BernsteinPolynomial.java +94 -0
- data/src/toxi/geom/BezierCurve2D.java +159 -0
- data/src/toxi/geom/BezierCurve3D.java +148 -0
- data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
- data/src/toxi/geom/BoxIntersector.java +52 -0
- data/src/toxi/geom/Circle.java +230 -0
- data/src/toxi/geom/CircleIntersector.java +85 -0
- data/src/toxi/geom/Cone.java +150 -0
- data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
- data/src/toxi/geom/CoordinateExtractor.java +16 -0
- data/src/toxi/geom/Ellipse.java +250 -0
- data/src/toxi/geom/GMatrix.java +2599 -0
- data/src/toxi/geom/GVector.java +833 -0
- data/src/toxi/geom/GlobalGridTesselator.java +54 -0
- data/src/toxi/geom/GridTesselator.java +108 -0
- data/src/toxi/geom/Intersector2D.java +49 -0
- data/src/toxi/geom/Intersector3D.java +51 -0
- data/src/toxi/geom/IsectData2D.java +103 -0
- data/src/toxi/geom/IsectData3D.java +103 -0
- data/src/toxi/geom/Line2D.java +534 -0
- data/src/toxi/geom/Line3D.java +471 -0
- data/src/toxi/geom/LineStrip2D.java +430 -0
- data/src/toxi/geom/LineStrip3D.java +230 -0
- data/src/toxi/geom/LocalGridTesselator.java +57 -0
- data/src/toxi/geom/Matrix3d.java +3048 -0
- data/src/toxi/geom/Matrix4f.java +3446 -0
- data/src/toxi/geom/Matrix4x4.java +1076 -0
- data/src/toxi/geom/MatrixSizeException.java +58 -0
- data/src/toxi/geom/OctreeVisitor.java +44 -0
- data/src/toxi/geom/Origin3D.java +148 -0
- data/src/toxi/geom/Plane.java +293 -0
- data/src/toxi/geom/PlaneIntersector.java +57 -0
- data/src/toxi/geom/PointCloud3D.java +253 -0
- data/src/toxi/geom/PointOctree.java +502 -0
- data/src/toxi/geom/PointQuadtree.java +375 -0
- data/src/toxi/geom/Polygon2D.java +1038 -0
- data/src/toxi/geom/PolygonClipper2D.java +45 -0
- data/src/toxi/geom/PolygonTesselator.java +20 -0
- data/src/toxi/geom/QuadtreeVisitor.java +44 -0
- data/src/toxi/geom/Quaternion.java +641 -0
- data/src/toxi/geom/Ray2D.java +146 -0
- data/src/toxi/geom/Ray3D.java +150 -0
- data/src/toxi/geom/Ray3DIntersector.java +75 -0
- data/src/toxi/geom/ReadonlyVec2D.java +575 -0
- data/src/toxi/geom/ReadonlyVec3D.java +628 -0
- data/src/toxi/geom/ReadonlyVec4D.java +431 -0
- data/src/toxi/geom/Rect.java +720 -0
- data/src/toxi/geom/Reflector3D.java +58 -0
- data/src/toxi/geom/Shape2D.java +94 -0
- data/src/toxi/geom/Shape3D.java +42 -0
- data/src/toxi/geom/SingularMatrixException.java +57 -0
- data/src/toxi/geom/SpatialBins.java +182 -0
- data/src/toxi/geom/SpatialIndex.java +61 -0
- data/src/toxi/geom/Sphere.java +224 -0
- data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
- data/src/toxi/geom/Spline2D.java +349 -0
- data/src/toxi/geom/Spline3D.java +351 -0
- data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
- data/src/toxi/geom/Triangle2D.java +422 -0
- data/src/toxi/geom/Triangle3D.java +456 -0
- data/src/toxi/geom/TriangleIntersector.java +105 -0
- data/src/toxi/geom/Vec2D.java +1328 -0
- data/src/toxi/geom/Vec3D.java +1832 -0
- data/src/toxi/geom/Vec4D.java +985 -0
- data/src/toxi/geom/VecMathUtil.java +100 -0
- data/src/toxi/geom/XAxisCylinder.java +64 -0
- data/src/toxi/geom/YAxisCylinder.java +65 -0
- data/src/toxi/geom/ZAxisCylinder.java +64 -0
- data/src/toxi/geom/mesh/BezierPatch.java +200 -0
- data/src/toxi/geom/mesh/BoxSelector.java +62 -0
- data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
- data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
- data/src/toxi/geom/mesh/Face.java +176 -0
- data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
- data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
- data/src/toxi/geom/mesh/Mesh3D.java +224 -0
- data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
- data/src/toxi/geom/mesh/OBJWriter.java +194 -0
- data/src/toxi/geom/mesh/PLYWriter.java +167 -0
- data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
- data/src/toxi/geom/mesh/STLColorModel.java +54 -0
- data/src/toxi/geom/mesh/STLReader.java +185 -0
- data/src/toxi/geom/mesh/STLWriter.java +323 -0
- data/src/toxi/geom/mesh/SphereFunction.java +156 -0
- data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
- data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
- data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
- data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
- data/src/toxi/geom/mesh/Terrain.java +451 -0
- data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
- data/src/toxi/geom/mesh/Vertex.java +78 -0
- data/src/toxi/geom/mesh/VertexSelector.java +193 -0
- data/src/toxi/geom/mesh/WEFace.java +100 -0
- data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
- data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
- data/src/toxi/geom/mesh/WEVertex.java +134 -0
- data/src/toxi/geom/mesh/WingedEdge.java +115 -0
- data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
- data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
- data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
- data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
- data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
- data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
- data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
- data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
- data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
- data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
- data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
- data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
- data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
- data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
- data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
- data/src/toxi/geom/nurbs/ControlNet.java +148 -0
- data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
- data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
- data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
- data/src/toxi/geom/nurbs/KnotVector.java +333 -0
- data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
- data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
- data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
- data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
- data/src/toxi/image/util/Filter8bit.java +331 -0
- data/src/toxi/image/util/TiledFrameExporter.java +162 -0
- data/src/toxi/math/BezierInterpolation.java +102 -0
- data/src/toxi/math/CircularInterpolation.java +88 -0
- data/src/toxi/math/CosineInterpolation.java +51 -0
- data/src/toxi/math/DecimatedInterpolation.java +77 -0
- data/src/toxi/math/ExponentialInterpolation.java +68 -0
- data/src/toxi/math/InterpolateStrategy.java +60 -0
- data/src/toxi/math/Interpolation2D.java +93 -0
- data/src/toxi/math/LinearInterpolation.java +46 -0
- data/src/toxi/math/MathUtils.java +990 -0
- data/src/toxi/math/NonLinearScaleMap.java +101 -0
- data/src/toxi/math/ScaleMap.java +183 -0
- data/src/toxi/math/SigmoidInterpolation.java +78 -0
- data/src/toxi/math/SinCosLUT.java +141 -0
- data/src/toxi/math/ThresholdInterpolation.java +58 -0
- data/src/toxi/math/ZoomLensInterpolation.java +126 -0
- data/src/toxi/math/conversion/UnitTranslator.java +161 -0
- data/src/toxi/math/noise/PerlinNoise.java +281 -0
- data/src/toxi/math/noise/SimplexNoise.java +542 -0
- data/src/toxi/math/waves/AMFMSineWave.java +143 -0
- data/src/toxi/math/waves/AbstractWave.java +248 -0
- data/src/toxi/math/waves/ConstantWave.java +48 -0
- data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
- data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
- data/src/toxi/math/waves/FMSineWave.java +142 -0
- data/src/toxi/math/waves/FMSquareWave.java +143 -0
- data/src/toxi/math/waves/FMTriangleWave.java +126 -0
- data/src/toxi/math/waves/SineWave.java +81 -0
- data/src/toxi/math/waves/Wave2D.java +68 -0
- data/src/toxi/math/waves/WaveState.java +69 -0
- data/src/toxi/music/scale/AbstractScale.java +117 -0
- data/src/toxi/music/scale/GenericScale.java +66 -0
- data/src/toxi/music/scale/MajorScale.java +41 -0
- data/src/toxi/newmesh/AttributedEdge.java +106 -0
- data/src/toxi/newmesh/AttributedFace.java +63 -0
- data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
- data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
- data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
- data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
- data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
- data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
- data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
- data/src/toxi/newmesh/SpatialIndex.java +78 -0
- data/src/toxi/physics2d/ParticlePath2D.java +100 -0
- data/src/toxi/physics2d/ParticleString2D.java +184 -0
- data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
- data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
- data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
- data/src/toxi/physics2d/VerletParticle2D.java +457 -0
- data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
- data/src/toxi/physics2d/VerletSpring2D.java +181 -0
- data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
- data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
- data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
- data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
- data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
- data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
- data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
- data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
- data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
- data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
- data/src/toxi/physics3d/ParticlePath3D.java +100 -0
- data/src/toxi/physics3d/ParticleString3D.java +184 -0
- data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
- data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
- data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
- data/src/toxi/physics3d/VerletParticle3D.java +385 -0
- data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
- data/src/toxi/physics3d/VerletSpring3D.java +180 -0
- data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
- data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
- data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
- data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
- data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
- data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
- data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
- data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
- data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
- data/src/toxi/processing/ArrowModifier.java +116 -0
- data/src/toxi/processing/DashedLineModifier.java +48 -0
- data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
- data/src/toxi/processing/Line2DRenderModifier.java +18 -0
- data/src/toxi/processing/MeshToVBO.java +94 -0
- data/src/toxi/processing/NormalMapper.java +18 -0
- data/src/toxi/processing/POVInterface.java +121 -0
- data/src/toxi/processing/POVMesh.java +219 -0
- data/src/toxi/processing/POVWriter.java +460 -0
- data/src/toxi/processing/RCOpaque.java +77 -0
- data/src/toxi/processing/RCTransp.java +78 -0
- data/src/toxi/processing/TextureBuilder.java +232 -0
- data/src/toxi/processing/Textures.java +110 -0
- data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
- data/src/toxi/processing/Tracing.java +25 -0
- data/src/toxi/processing/XYZNormalMapper.java +30 -0
- data/src/toxi/sim/automata/CAMatrix.java +297 -0
- data/src/toxi/sim/automata/CARule.java +76 -0
- data/src/toxi/sim/automata/CARule2D.java +354 -0
- data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
- data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
- data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
- data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
- data/src/toxi/sim/dla/DLA.java +497 -0
- data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
- data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
- data/src/toxi/sim/dla/DLAEventListener.java +57 -0
- data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
- data/src/toxi/sim/dla/DLAParticle.java +102 -0
- data/src/toxi/sim/dla/DLASegment.java +88 -0
- data/src/toxi/sim/dla/PipelineOrder.java +50 -0
- data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
- data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
- data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
- data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
- data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
- data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
- data/src/toxi/sim/grayscott/GrayScott.java +469 -0
- data/src/toxi/util/DateUtils.java +141 -0
- data/src/toxi/util/FileSequenceDescriptor.java +181 -0
- data/src/toxi/util/FileUtils.java +467 -0
- data/src/toxi/util/datatypes/ArraySet.java +128 -0
- data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
- data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
- data/src/toxi/util/datatypes/DoubleRange.java +251 -0
- data/src/toxi/util/datatypes/FloatRange.java +251 -0
- data/src/toxi/util/datatypes/GenericSet.java +215 -0
- data/src/toxi/util/datatypes/IntegerRange.java +247 -0
- data/src/toxi/util/datatypes/IntegerSet.java +149 -0
- data/src/toxi/util/datatypes/ItemIndex.java +72 -0
- data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
- data/src/toxi/util/datatypes/TypedProperties.java +291 -0
- data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
- data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
- data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
- data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
- data/src/toxi/util/events/EventDispatcher.java +86 -0
- data/src/toxi/volume/AdditiveBrush.java +19 -0
- data/src/toxi/volume/ArrayIsoSurface.java +297 -0
- data/src/toxi/volume/BoxBrush.java +100 -0
- data/src/toxi/volume/BrushMode.java +16 -0
- data/src/toxi/volume/HashIsoSurface.java +354 -0
- data/src/toxi/volume/IsoSurface.java +59 -0
- data/src/toxi/volume/MarchingCubesIndex.java +312 -0
- data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
- data/src/toxi/volume/MeshVoxelizer.java +216 -0
- data/src/toxi/volume/MultiplyBrush.java +20 -0
- data/src/toxi/volume/PeakBrush.java +21 -0
- data/src/toxi/volume/ReplaceBrush.java +19 -0
- data/src/toxi/volume/RoundBrush.java +113 -0
- data/src/toxi/volume/VolumetricBrush.java +160 -0
- data/src/toxi/volume/VolumetricHashMap.java +179 -0
- data/src/toxi/volume/VolumetricSpace.java +195 -0
- data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
- data/toxiclibs.gemspec +34 -0
- metadata +424 -27
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* __ .__ .__ ._____.
|
|
3
|
+
* _/ |_ _______ __|__| ____ | | |__\_ |__ ______
|
|
4
|
+
* \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
|
|
5
|
+
* | | ( <_> > <| \ \___| |_| || \_\ \\___ \
|
|
6
|
+
* |__| \____/__/\_ \__|\___ >____/__||___ /____ >
|
|
7
|
+
* \/ \/ \/ \/
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
10
|
+
*
|
|
11
|
+
* This library is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
17
|
+
*
|
|
18
|
+
* This library is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
24
|
+
* License along with this library; if not, write to the Free Software
|
|
25
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
package toxi.data.feeds;
|
|
29
|
+
|
|
30
|
+
import javax.xml.bind.annotation.XmlAttribute;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @author tux
|
|
35
|
+
*/
|
|
36
|
+
public class RSSEnclosure {
|
|
37
|
+
|
|
38
|
+
@XmlAttribute
|
|
39
|
+
public String url,
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
type;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
@XmlAttribute
|
|
50
|
+
public int length;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @return
|
|
55
|
+
*/
|
|
56
|
+
public String toString() {
|
|
57
|
+
return url + " (" + type + ")";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* __ .__ .__ ._____.
|
|
3
|
+
* _/ |_ _______ __|__| ____ | | |__\_ |__ ______
|
|
4
|
+
* \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
|
|
5
|
+
* | | ( <_> > <| \ \___| |_| || \_\ \\___ \
|
|
6
|
+
* |__| \____/__/\_ \__|\___ >____/__||___ /____ >
|
|
7
|
+
* \/ \/ \/ \/
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
10
|
+
*
|
|
11
|
+
* This library is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
17
|
+
*
|
|
18
|
+
* This library is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
24
|
+
* License along with this library; if not, write to the Free Software
|
|
25
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
package toxi.data.feeds;
|
|
29
|
+
|
|
30
|
+
import java.io.IOException;
|
|
31
|
+
import java.io.InputStream;
|
|
32
|
+
import java.net.MalformedURLException;
|
|
33
|
+
import java.net.URL;
|
|
34
|
+
import java.util.Iterator;
|
|
35
|
+
|
|
36
|
+
import javax.xml.bind.JAXBContext;
|
|
37
|
+
import javax.xml.bind.JAXBException;
|
|
38
|
+
import javax.xml.bind.annotation.XmlAttribute;
|
|
39
|
+
import javax.xml.bind.annotation.XmlRootElement;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @author tux
|
|
44
|
+
*/
|
|
45
|
+
@XmlRootElement(name = "rss")
|
|
46
|
+
public class RSSFeed implements Iterable<RSSItem> {
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* @param stream
|
|
51
|
+
* @return
|
|
52
|
+
*/
|
|
53
|
+
public static RSSFeed newFromStream(InputStream stream) {
|
|
54
|
+
RSSFeed feed = null;
|
|
55
|
+
try {
|
|
56
|
+
JAXBContext context = JAXBContext.newInstance(RSSFeed.class);
|
|
57
|
+
feed = (RSSFeed) context.createUnmarshaller().unmarshal(stream);
|
|
58
|
+
} catch (JAXBException e) {
|
|
59
|
+
e.printStackTrace();
|
|
60
|
+
}
|
|
61
|
+
return feed;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @param url
|
|
67
|
+
* @return
|
|
68
|
+
*/
|
|
69
|
+
public static RSSFeed newFromURL(String url) {
|
|
70
|
+
RSSFeed feed = null;
|
|
71
|
+
try {
|
|
72
|
+
feed = newFromStream(new URL(url).openStream());
|
|
73
|
+
} catch (MalformedURLException e) {
|
|
74
|
+
e.printStackTrace();
|
|
75
|
+
} catch (IOException e) {
|
|
76
|
+
e.printStackTrace();
|
|
77
|
+
}
|
|
78
|
+
return feed;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
@XmlAttribute(name = "version")
|
|
85
|
+
public float version;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
*
|
|
89
|
+
*/
|
|
90
|
+
public RSSChannel channel;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @return
|
|
95
|
+
*/
|
|
96
|
+
public Iterator<RSSItem> iterator() {
|
|
97
|
+
return channel.items.iterator();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* __ .__ .__ ._____.
|
|
3
|
+
* _/ |_ _______ __|__| ____ | | |__\_ |__ ______
|
|
4
|
+
* \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
|
|
5
|
+
* | | ( <_> > <| \ \___| |_| || \_\ \\___ \
|
|
6
|
+
* |__| \____/__/\_ \__|\___ >____/__||___ /____ >
|
|
7
|
+
* \/ \/ \/ \/
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
10
|
+
*
|
|
11
|
+
* This library is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
17
|
+
*
|
|
18
|
+
* This library is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
24
|
+
* License along with this library; if not, write to the Free Software
|
|
25
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
package toxi.data.feeds;
|
|
29
|
+
|
|
30
|
+
import java.util.ArrayList;
|
|
31
|
+
import java.util.List;
|
|
32
|
+
|
|
33
|
+
import javax.xml.bind.annotation.XmlElement;
|
|
34
|
+
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|
35
|
+
import javax.xml.datatype.XMLGregorianCalendar;
|
|
36
|
+
|
|
37
|
+
import toxi.data.feeds.util.EntityStripper;
|
|
38
|
+
import toxi.data.feeds.util.Rfc822DateAdapter;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @author tux
|
|
43
|
+
*/
|
|
44
|
+
public class RSSItem {
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
@XmlElement
|
|
50
|
+
public String title;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
*/
|
|
55
|
+
@XmlElement
|
|
56
|
+
public String description;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
@XmlElement(required = true)
|
|
62
|
+
@XmlJavaTypeAdapter(Rfc822DateAdapter.class)
|
|
63
|
+
public XMLGregorianCalendar pubDate;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
*/
|
|
68
|
+
@XmlElement
|
|
69
|
+
public String guid;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
*/
|
|
74
|
+
@XmlElement
|
|
75
|
+
public String link;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
*/
|
|
80
|
+
@XmlElement(name = "category")
|
|
81
|
+
public List<String> categories = new ArrayList<String>();
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
*
|
|
85
|
+
*/
|
|
86
|
+
@XmlElement(name = "enclosure")
|
|
87
|
+
public List<RSSEnclosure> enclosures = new ArrayList<RSSEnclosure>();
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
* @return
|
|
92
|
+
*/
|
|
93
|
+
public String getDescriptionPlain() {
|
|
94
|
+
return EntityStripper.flattenXML(description);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @return
|
|
100
|
+
*/
|
|
101
|
+
public String getTitlePlain() {
|
|
102
|
+
return EntityStripper.flattenXML(title);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,2480 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @(#)StripEntities.java
|
|
3
|
+
*
|
|
4
|
+
* Summary: Strips HTML entities such as " from a string, replacing them by their Unicode equivalents.
|
|
5
|
+
*
|
|
6
|
+
* Copyright: (c) 2002-2009 Roedy Green, Canadian Mind Products, http://mindprod.com
|
|
7
|
+
*
|
|
8
|
+
* Licence: This software may be copied and used freely for any purpose but military.
|
|
9
|
+
* http://mindprod.com/contact/nonmil.html
|
|
10
|
+
*
|
|
11
|
+
* Requires: JDK 1.5+
|
|
12
|
+
*
|
|
13
|
+
* Created with: IntelliJ IDEA IDE.
|
|
14
|
+
*
|
|
15
|
+
* Version History:
|
|
16
|
+
* 2.6 2009-04-05 - StripEntities now leaves a space behind when it removes a <br><p><td> etc tag.
|
|
17
|
+
*/
|
|
18
|
+
package toxi.data.feeds.util;
|
|
19
|
+
|
|
20
|
+
import java.util.HashMap;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Strips HTML entities such as " from a string, replacing them by their
|
|
24
|
+
* Unicode equivalents.
|
|
25
|
+
*
|
|
26
|
+
* @author Roedy Green, Canadian Mind Products
|
|
27
|
+
* @version 2.6 2009-04-05 - StripEntities now leaves a space behind when it
|
|
28
|
+
* removes a <br>
|
|
29
|
+
* <p>
|
|
30
|
+
* <td>etc tag.
|
|
31
|
+
* @since 2002-07-14
|
|
32
|
+
*/
|
|
33
|
+
public class EntityStripper {
|
|
34
|
+
|
|
35
|
+
// ------------------------------ CONSTANTS ------------------------------
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* true to enable the testing code.
|
|
39
|
+
*/
|
|
40
|
+
private static final boolean DEBUGGING = true;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* unicode nbsp control char, 160, 0x0a.
|
|
44
|
+
*/
|
|
45
|
+
@SuppressWarnings({ "WeakerAccess" })
|
|
46
|
+
public static final char UNICODE_NBSP_160_0x0a = 160;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Longest an entity can be {@value #LONGEST_ENTITY}, at least in our
|
|
50
|
+
* tables, including the lead & and trail ;.
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
public static final int LONGEST_ENTITY = 10;/* ϑ */
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The shortest an entity can be {@value #SHORTEST_ENTITY}, at least in our
|
|
57
|
+
* tables, including the lead & and trailing ;.
|
|
58
|
+
*
|
|
59
|
+
*/
|
|
60
|
+
public static final int SHORTEST_ENTITY = 4;/*  < */
|
|
61
|
+
|
|
62
|
+
// ------------------------------ FIELDS ------------------------------
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* allows lookup by entity name, to get the corresponding char. Loaded from
|
|
66
|
+
* two hard-coded generated arrays burning into this class.
|
|
67
|
+
*/
|
|
68
|
+
private static final HashMap<String, Character> entityToChar;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* tags, that when removed should leave a space behind.
|
|
72
|
+
*/
|
|
73
|
+
private static String[] spacingTags = { "tr", "td", "th", "p", "br", "dl",
|
|
74
|
+
"dt", "li" };
|
|
75
|
+
|
|
76
|
+
// -------------------------- PUBLIC STATIC METHODS
|
|
77
|
+
// --------------------------
|
|
78
|
+
|
|
79
|
+
static {
|
|
80
|
+
// build HashMap to look up entity name to get corresponding Unicode
|
|
81
|
+
// char number. Following code generated by Entities.
|
|
82
|
+
String[] entityKeys = {
|
|
83
|
+
// W A R N I N G ! _ M A N U A L L Y _ I N S E R T E D _
|
|
84
|
+
// G E N E
|
|
85
|
+
// R A T E D _ C O D E
|
|
86
|
+
// generated by Entities. Insert from
|
|
87
|
+
// com\mindprod\entities\entitiesjustkeys.javafrag
|
|
88
|
+
"quot"/* 34 : " quotation mark */, "amp"/*
|
|
89
|
+
* 38 : &
|
|
90
|
+
* ampersand
|
|
91
|
+
*/, "lt"/*
|
|
92
|
+
* 60 :
|
|
93
|
+
* <
|
|
94
|
+
* less
|
|
95
|
+
* -than
|
|
96
|
+
* sign
|
|
97
|
+
*/,
|
|
98
|
+
"gt"/* 62 : > greater-than sign */, "nbsp"/*
|
|
99
|
+
* 160 :  
|
|
100
|
+
* non-breaking
|
|
101
|
+
* space
|
|
102
|
+
*/, "iexcl"/*
|
|
103
|
+
* 161
|
|
104
|
+
* :
|
|
105
|
+
* &
|
|
106
|
+
* #xa1
|
|
107
|
+
* ;
|
|
108
|
+
* inverted
|
|
109
|
+
* exclamation
|
|
110
|
+
* mark
|
|
111
|
+
*/,
|
|
112
|
+
"cent"/* 162 : ¢ cent sign */, "pound"/*
|
|
113
|
+
* 163 : £ pound
|
|
114
|
+
* sign
|
|
115
|
+
*/, "curren"/*
|
|
116
|
+
* 164 :
|
|
117
|
+
* &
|
|
118
|
+
* #xa4;
|
|
119
|
+
* currency
|
|
120
|
+
* sign
|
|
121
|
+
*/,
|
|
122
|
+
"yen"/* 165 : ¥ yen sign */, "brvbar"/*
|
|
123
|
+
* 166 : ¦ broken
|
|
124
|
+
* bar
|
|
125
|
+
*/, "sect"/*
|
|
126
|
+
* 167 :
|
|
127
|
+
* §
|
|
128
|
+
* section
|
|
129
|
+
* sign
|
|
130
|
+
*/,
|
|
131
|
+
"uml"/* 168 : ¨ diaeresis */, "copy"/*
|
|
132
|
+
* 169 : ©
|
|
133
|
+
* copyright sign
|
|
134
|
+
*/, "ordf"/*
|
|
135
|
+
* 170 :
|
|
136
|
+
* ª
|
|
137
|
+
* feminine
|
|
138
|
+
* ordinal
|
|
139
|
+
* indicator
|
|
140
|
+
*/,
|
|
141
|
+
"laquo"/* 171 : « left guillemot */, "not"/*
|
|
142
|
+
* 172 : ¬
|
|
143
|
+
* not sign
|
|
144
|
+
*/, "shy"/*
|
|
145
|
+
* 173
|
|
146
|
+
* :
|
|
147
|
+
* ­
|
|
148
|
+
* ;
|
|
149
|
+
* soft
|
|
150
|
+
* hyphen
|
|
151
|
+
*/,
|
|
152
|
+
"reg"/* 174 : ® registered sign */, "macr"/*
|
|
153
|
+
* 175 : ¯
|
|
154
|
+
* macron
|
|
155
|
+
*/, "deg"/*
|
|
156
|
+
* 176
|
|
157
|
+
* :
|
|
158
|
+
* °
|
|
159
|
+
* ;
|
|
160
|
+
* degree
|
|
161
|
+
* sign
|
|
162
|
+
*/,
|
|
163
|
+
"plusmn"/* 177 : ± plus-minus sign */, "sup2"/*
|
|
164
|
+
* 178 :
|
|
165
|
+
* ²
|
|
166
|
+
* superscript
|
|
167
|
+
* two
|
|
168
|
+
*/,
|
|
169
|
+
"sup3"/* 179 : ³ superscript three */, "acute"/*
|
|
170
|
+
* 180 :
|
|
171
|
+
* ´
|
|
172
|
+
* acute
|
|
173
|
+
* accent
|
|
174
|
+
*/,
|
|
175
|
+
"micro"/* 181 : µ micro sign */, "para"/*
|
|
176
|
+
* 182 : ¶
|
|
177
|
+
* pilcrow sign
|
|
178
|
+
*/, "middot"/*
|
|
179
|
+
* 183
|
|
180
|
+
* :
|
|
181
|
+
* ·
|
|
182
|
+
* ;
|
|
183
|
+
* middle
|
|
184
|
+
* dot
|
|
185
|
+
*/,
|
|
186
|
+
"cedil"/* 184 : ¸ cedilla */, "sup1"/*
|
|
187
|
+
* 185 : ¹
|
|
188
|
+
* superscript one
|
|
189
|
+
*/, "ordm"/*
|
|
190
|
+
* 186 :
|
|
191
|
+
* º
|
|
192
|
+
* masculine
|
|
193
|
+
* ordinal
|
|
194
|
+
* indicator
|
|
195
|
+
*/,
|
|
196
|
+
"raquo"/* 187 : » right guillemot */, "frac14"/*
|
|
197
|
+
* 188 :
|
|
198
|
+
* ¼
|
|
199
|
+
* vulgar
|
|
200
|
+
* fraction
|
|
201
|
+
* 1/4
|
|
202
|
+
*/,
|
|
203
|
+
"frac12"/* 189 : ½ vulgar fraction 1/2 */, "frac34"/*
|
|
204
|
+
* 190 :
|
|
205
|
+
* &
|
|
206
|
+
* #xbe;
|
|
207
|
+
* vulgar
|
|
208
|
+
* fraction
|
|
209
|
+
* 3/4
|
|
210
|
+
*/,
|
|
211
|
+
"iquest"/* 191 : ¿ inverted question mark */, "Agrave"/*
|
|
212
|
+
* 192
|
|
213
|
+
* :
|
|
214
|
+
* &
|
|
215
|
+
* #xc0
|
|
216
|
+
* ;
|
|
217
|
+
* Latin
|
|
218
|
+
* capital
|
|
219
|
+
* letter
|
|
220
|
+
* A
|
|
221
|
+
* with
|
|
222
|
+
* grave
|
|
223
|
+
*/,
|
|
224
|
+
"Aacute"/*
|
|
225
|
+
* 193 : Á Latin capital letter A with acute
|
|
226
|
+
*/, "Acirc"/*
|
|
227
|
+
* 194 : Â Latin capital letter A with
|
|
228
|
+
* circumflex
|
|
229
|
+
*/, "Atilde"/*
|
|
230
|
+
* 195 : Ã Latin capital
|
|
231
|
+
* letter A with tilde
|
|
232
|
+
*/, "Auml"/*
|
|
233
|
+
* 196 : Ä
|
|
234
|
+
* Latin capital
|
|
235
|
+
* letter A with
|
|
236
|
+
* diaeresis
|
|
237
|
+
*/, "Aring"/*
|
|
238
|
+
* 197 :
|
|
239
|
+
* &
|
|
240
|
+
* #xc5;
|
|
241
|
+
* Latin
|
|
242
|
+
* capital
|
|
243
|
+
* letter
|
|
244
|
+
* A
|
|
245
|
+
* with
|
|
246
|
+
* ring
|
|
247
|
+
* above
|
|
248
|
+
*/,
|
|
249
|
+
"AElig"/* 198 : Æ Latin capital letter AE */, "Ccedil"/*
|
|
250
|
+
* 199
|
|
251
|
+
* :
|
|
252
|
+
* &
|
|
253
|
+
* #xc7
|
|
254
|
+
* ;
|
|
255
|
+
* Latin
|
|
256
|
+
* capital
|
|
257
|
+
* letter
|
|
258
|
+
* C
|
|
259
|
+
* with
|
|
260
|
+
* cedilla
|
|
261
|
+
*/,
|
|
262
|
+
"Egrave"/*
|
|
263
|
+
* 200 : È Latin capital letter E with grave
|
|
264
|
+
*/, "Eacute"/*
|
|
265
|
+
* 201 : É Latin capital letter E with
|
|
266
|
+
* acute
|
|
267
|
+
*/, "Ecirc"/*
|
|
268
|
+
* 202 : Ê Latin capital
|
|
269
|
+
* letter E with circumflex
|
|
270
|
+
*/, "Euml"/*
|
|
271
|
+
* 203 : Ë
|
|
272
|
+
* Latin capital
|
|
273
|
+
* letter E with
|
|
274
|
+
* diaeresis
|
|
275
|
+
*/, "Igrave"/*
|
|
276
|
+
* 204
|
|
277
|
+
* :
|
|
278
|
+
* Ì
|
|
279
|
+
* ;
|
|
280
|
+
* Latin
|
|
281
|
+
* capital
|
|
282
|
+
* letter
|
|
283
|
+
* I
|
|
284
|
+
* with
|
|
285
|
+
* grave
|
|
286
|
+
*/,
|
|
287
|
+
"Iacute"/*
|
|
288
|
+
* 205 : Í Latin capital letter I with acute
|
|
289
|
+
*/, "Icirc"/*
|
|
290
|
+
* 206 : Î Latin capital letter I with
|
|
291
|
+
* circumflex
|
|
292
|
+
*/, "Iuml"/*
|
|
293
|
+
* 207 : Ï Latin capital
|
|
294
|
+
* letter I with diaeresis
|
|
295
|
+
*/, "ETH"/*
|
|
296
|
+
* 208 : Ð Latin
|
|
297
|
+
* capital letter eth
|
|
298
|
+
*/, "Ntilde"/*
|
|
299
|
+
* 209 :
|
|
300
|
+
* Ñ
|
|
301
|
+
* Latin
|
|
302
|
+
* capital
|
|
303
|
+
* letter
|
|
304
|
+
* N with
|
|
305
|
+
* tilde
|
|
306
|
+
*/,
|
|
307
|
+
"Ograve"/*
|
|
308
|
+
* 210 : Ò Latin capital letter O with grave
|
|
309
|
+
*/, "Oacute"/*
|
|
310
|
+
* 211 : Ó Latin capital letter O with
|
|
311
|
+
* acute
|
|
312
|
+
*/, "Ocirc"/*
|
|
313
|
+
* 212 : Ô Latin capital
|
|
314
|
+
* letter O with circumflex
|
|
315
|
+
*/, "Otilde"/*
|
|
316
|
+
* 213 : Õ
|
|
317
|
+
* Latin capital
|
|
318
|
+
* letter O with
|
|
319
|
+
* tilde
|
|
320
|
+
*/, "Ouml"/*
|
|
321
|
+
* 214
|
|
322
|
+
* :
|
|
323
|
+
* Ö
|
|
324
|
+
* ;
|
|
325
|
+
* Latin
|
|
326
|
+
* capital
|
|
327
|
+
* letter
|
|
328
|
+
* O
|
|
329
|
+
* with
|
|
330
|
+
* diaeresis
|
|
331
|
+
*/,
|
|
332
|
+
"times"/* 215 : × multiplication sign */, "Oslash"/*
|
|
333
|
+
* 216 :
|
|
334
|
+
* Ø
|
|
335
|
+
* Latin
|
|
336
|
+
* capital
|
|
337
|
+
* letter
|
|
338
|
+
* O with
|
|
339
|
+
* stroke
|
|
340
|
+
*/,
|
|
341
|
+
"Ugrave"/*
|
|
342
|
+
* 217 : Ù Latin capital letter U with grave
|
|
343
|
+
*/, "Uacute"/*
|
|
344
|
+
* 218 : Ú Latin capital letter U with
|
|
345
|
+
* acute
|
|
346
|
+
*/, "Ucirc"/*
|
|
347
|
+
* 219 : Û Latin capital
|
|
348
|
+
* letter U with circumflex
|
|
349
|
+
*/, "Uuml"/*
|
|
350
|
+
* 220 : Ü
|
|
351
|
+
* Latin capital
|
|
352
|
+
* letter U with
|
|
353
|
+
* diaeresis
|
|
354
|
+
*/, "Yacute"/*
|
|
355
|
+
* 221
|
|
356
|
+
* :
|
|
357
|
+
* Ý
|
|
358
|
+
* ;
|
|
359
|
+
* Latin
|
|
360
|
+
* capital
|
|
361
|
+
* letter
|
|
362
|
+
* Y
|
|
363
|
+
* with
|
|
364
|
+
* acute
|
|
365
|
+
*/,
|
|
366
|
+
"THORN"/* 222 : Þ Latin capital letter Thorn */,
|
|
367
|
+
"szlig"/* 223 : ß Latin small letter sharp s */,
|
|
368
|
+
"agrave"/* 224 : à Latin small letter a with grave */,
|
|
369
|
+
"aacute"/* 225 : á Latin small letter a with acute */,
|
|
370
|
+
"acirc"/*
|
|
371
|
+
* 226 : â Latin small letter a with circumflex
|
|
372
|
+
*/, "atilde"/*
|
|
373
|
+
* 227 : ã Latin small letter a with
|
|
374
|
+
* tilde
|
|
375
|
+
*/, "auml"/*
|
|
376
|
+
* 228 : ä Latin small
|
|
377
|
+
* letter a with diaeresis
|
|
378
|
+
*/, "aring"/*
|
|
379
|
+
* 229 : å Latin
|
|
380
|
+
* small letter a
|
|
381
|
+
* with ring above
|
|
382
|
+
*/, "aelig"/*
|
|
383
|
+
* 230 :
|
|
384
|
+
* æ
|
|
385
|
+
* Latin
|
|
386
|
+
* lowercase
|
|
387
|
+
* ligature
|
|
388
|
+
* ae
|
|
389
|
+
*/,
|
|
390
|
+
"ccedil"/*
|
|
391
|
+
* 231 : ç Latin small letter c with cedilla
|
|
392
|
+
*/, "egrave"/*
|
|
393
|
+
* 232 : è Latin small letter e with
|
|
394
|
+
* grave
|
|
395
|
+
*/, "eacute"/*
|
|
396
|
+
* 233 : é Latin small
|
|
397
|
+
* letter e with acute
|
|
398
|
+
*/, "ecirc"/*
|
|
399
|
+
* 234 : ê
|
|
400
|
+
* Latin small
|
|
401
|
+
* letter e with
|
|
402
|
+
* circumflex
|
|
403
|
+
*/, "euml"/*
|
|
404
|
+
* 235
|
|
405
|
+
* :
|
|
406
|
+
* ë
|
|
407
|
+
* ;
|
|
408
|
+
* Latin
|
|
409
|
+
* small
|
|
410
|
+
* letter
|
|
411
|
+
* e
|
|
412
|
+
* with
|
|
413
|
+
* diaeresis
|
|
414
|
+
*/,
|
|
415
|
+
"igrave"/* 236 : ì Latin small letter i with grave */,
|
|
416
|
+
"iacute"/* 237 : í Latin small letter i with acute */,
|
|
417
|
+
"icirc"/*
|
|
418
|
+
* 238 : î Latin small letter i with circumflex
|
|
419
|
+
*/, "iuml"/*
|
|
420
|
+
* 239 : ï Latin small letter i with
|
|
421
|
+
* diaeresis
|
|
422
|
+
*/, "eth"/*
|
|
423
|
+
* 240 : ð Latin small letter
|
|
424
|
+
* eth
|
|
425
|
+
*/, "ntilde"/*
|
|
426
|
+
* 241 : ñ Latin
|
|
427
|
+
* small letter n with
|
|
428
|
+
* tilde
|
|
429
|
+
*/, "ograve"/*
|
|
430
|
+
* 242 :
|
|
431
|
+
* ò
|
|
432
|
+
* Latin
|
|
433
|
+
* small
|
|
434
|
+
* letter
|
|
435
|
+
* o with
|
|
436
|
+
* grave
|
|
437
|
+
*/,
|
|
438
|
+
"oacute"/* 243 : ó Latin small letter o with acute */,
|
|
439
|
+
"ocirc"/*
|
|
440
|
+
* 244 : ô Latin small letter o with circumflex
|
|
441
|
+
*/, "otilde"/*
|
|
442
|
+
* 245 : õ Latin small letter o with
|
|
443
|
+
* tilde
|
|
444
|
+
*/, "ouml"/*
|
|
445
|
+
* 246 : ö Latin small
|
|
446
|
+
* letter o with diaeresis
|
|
447
|
+
*/, "divide"/*
|
|
448
|
+
* 247 : ÷
|
|
449
|
+
* division sign
|
|
450
|
+
*/, "oslash"/*
|
|
451
|
+
* 248
|
|
452
|
+
* :
|
|
453
|
+
* ø
|
|
454
|
+
* ;
|
|
455
|
+
* Latin
|
|
456
|
+
* small
|
|
457
|
+
* letter
|
|
458
|
+
* o
|
|
459
|
+
* with
|
|
460
|
+
* stroke
|
|
461
|
+
*/,
|
|
462
|
+
"ugrave"/* 249 : ù Latin small letter u with grave */,
|
|
463
|
+
"uacute"/* 250 : ú Latin small letter u with acute */,
|
|
464
|
+
"ucirc"/*
|
|
465
|
+
* 251 : û Latin small letter u with circumflex
|
|
466
|
+
*/, "uuml"/*
|
|
467
|
+
* 252 : ü Latin small letter u with
|
|
468
|
+
* diaeresis
|
|
469
|
+
*/, "yacute"/*
|
|
470
|
+
* 253 : ý Latin small
|
|
471
|
+
* letter y with acute
|
|
472
|
+
*/, "thorn"/*
|
|
473
|
+
* 254 : þ Latin
|
|
474
|
+
* small letter thorn
|
|
475
|
+
*/, "yuml"/*
|
|
476
|
+
* 255 :
|
|
477
|
+
* ÿ
|
|
478
|
+
* Latin
|
|
479
|
+
* small
|
|
480
|
+
* letter
|
|
481
|
+
* y with
|
|
482
|
+
* diaeresis
|
|
483
|
+
*/,
|
|
484
|
+
"OElig"/* 338 : Œ Latin capital ligature oe */,
|
|
485
|
+
"oelig"/* 339 : œ Latin small ligature oe */,
|
|
486
|
+
"Scaron"/*
|
|
487
|
+
* 352 : Š Latin capital letter S with caron
|
|
488
|
+
*/, "scaron"/*
|
|
489
|
+
* 353 : š Latin small letter s with
|
|
490
|
+
* caron
|
|
491
|
+
*/, "Yuml"/*
|
|
492
|
+
* 376 : Ÿ Latin capital
|
|
493
|
+
* letter Y with diaeresis
|
|
494
|
+
*/, "fnof"/*
|
|
495
|
+
* 402 : ƒ
|
|
496
|
+
* Latin small letter
|
|
497
|
+
* f with hook
|
|
498
|
+
*/, "circ"/*
|
|
499
|
+
* 710 :
|
|
500
|
+
* ˆ
|
|
501
|
+
* modifier
|
|
502
|
+
* letter
|
|
503
|
+
* circumflex
|
|
504
|
+
* accent
|
|
505
|
+
*/,
|
|
506
|
+
"tilde"/* 732 : ˜ small tilde */, "Alpha"/*
|
|
507
|
+
* 913 : Α
|
|
508
|
+
* Greek capital
|
|
509
|
+
* letter Alpha
|
|
510
|
+
*/, "Beta"/*
|
|
511
|
+
* 914
|
|
512
|
+
* :
|
|
513
|
+
* &#
|
|
514
|
+
* x392
|
|
515
|
+
* ;
|
|
516
|
+
* Greek
|
|
517
|
+
* capital
|
|
518
|
+
* letter
|
|
519
|
+
* Beta
|
|
520
|
+
*/,
|
|
521
|
+
"Gamma"/*
|
|
522
|
+
* 915 : & #x393 ; Greek capital letter Gamma
|
|
523
|
+
*/,
|
|
524
|
+
"Delta"/* 916 : Δ Greek capital letter Delta */,
|
|
525
|
+
"Epsilon"/* 917 : Ε Greek capital letter Epsilon */,
|
|
526
|
+
"Zeta"/* 918 : Ζ Greek capital letter Zeta */, "Eta"/*
|
|
527
|
+
* 919
|
|
528
|
+
* : &
|
|
529
|
+
* #
|
|
530
|
+
* x397
|
|
531
|
+
* ;
|
|
532
|
+
* Greek
|
|
533
|
+
* capital
|
|
534
|
+
* letter
|
|
535
|
+
* Eta
|
|
536
|
+
*/,
|
|
537
|
+
"Theta"/* 920 : Θ Greek capital letter Theta */,
|
|
538
|
+
"Iota"/* 921 : Ι Greek capital letter Iota */,
|
|
539
|
+
"Kappa"/*
|
|
540
|
+
* 922 : & #x39a ; Greek capital letter Kappa
|
|
541
|
+
*/,
|
|
542
|
+
"Lambda"/* 923 : Λ Greek capital letter Lambda */,
|
|
543
|
+
"Mu"/* 924 : Μ Greek capital letter Mu */, "Nu"/*
|
|
544
|
+
* 925 :
|
|
545
|
+
* Ν
|
|
546
|
+
* Greek
|
|
547
|
+
* capital
|
|
548
|
+
* letter
|
|
549
|
+
* Nu
|
|
550
|
+
*/,
|
|
551
|
+
"Xi"/* 926 : Ξ Greek capital letter Xi */, "Omicron"/*
|
|
552
|
+
* 927
|
|
553
|
+
* : &
|
|
554
|
+
* #
|
|
555
|
+
* x39f
|
|
556
|
+
* ;
|
|
557
|
+
* Greek
|
|
558
|
+
* capital
|
|
559
|
+
* letter
|
|
560
|
+
* Omicron
|
|
561
|
+
*/,
|
|
562
|
+
"Pi"/* 928 : Π Greek capital letter Pi */, "Rho"/*
|
|
563
|
+
* 929 :
|
|
564
|
+
* Ρ
|
|
565
|
+
* Greek
|
|
566
|
+
* capital
|
|
567
|
+
* letter
|
|
568
|
+
* Rho
|
|
569
|
+
*/,
|
|
570
|
+
"Sigma"/* 931 : Σ Greek capital letter Sigma */,
|
|
571
|
+
"Tau"/* 932 : Τ Greek capital letter Tau */,
|
|
572
|
+
"Upsilon"/* 933 : Υ Greek capital letter Upsilon */,
|
|
573
|
+
"Phi"/* 934 : Φ Greek capital letter Phi */, "Chi"/*
|
|
574
|
+
* 935 :
|
|
575
|
+
* &
|
|
576
|
+
* #x3a7
|
|
577
|
+
* ;
|
|
578
|
+
* Greek
|
|
579
|
+
* capital
|
|
580
|
+
* letter
|
|
581
|
+
* Chi
|
|
582
|
+
*/,
|
|
583
|
+
"Psi"/* 936 : Ψ Greek capital letter Psi */, "Omega"/*
|
|
584
|
+
* 937
|
|
585
|
+
* : &
|
|
586
|
+
* #
|
|
587
|
+
* x3a9
|
|
588
|
+
* ;
|
|
589
|
+
* Greek
|
|
590
|
+
* capital
|
|
591
|
+
* letter
|
|
592
|
+
* Omega
|
|
593
|
+
*/,
|
|
594
|
+
"alpha"/* 945 : α Greek small letter alpha */, "beta"/*
|
|
595
|
+
* 946
|
|
596
|
+
* :
|
|
597
|
+
* &
|
|
598
|
+
* #x3b2
|
|
599
|
+
* ;
|
|
600
|
+
* Greek
|
|
601
|
+
* small
|
|
602
|
+
* letter
|
|
603
|
+
* beta
|
|
604
|
+
*/,
|
|
605
|
+
"gamma"/*
|
|
606
|
+
* 947 : & #x3b3 ; Greek small letter gamma
|
|
607
|
+
*/,
|
|
608
|
+
"delta"/* 948 : δ Greek small letter delta */,
|
|
609
|
+
"epsilon"/* 949 : ε Greek small letter epsilon */,
|
|
610
|
+
"zeta"/* 950 : ζ Greek small letter zeta */, "eta"/*
|
|
611
|
+
* 951 :
|
|
612
|
+
* &
|
|
613
|
+
* #x3b7
|
|
614
|
+
* ;
|
|
615
|
+
* Greek
|
|
616
|
+
* small
|
|
617
|
+
* letter
|
|
618
|
+
* eta
|
|
619
|
+
*/,
|
|
620
|
+
"theta"/* 952 : θ Greek small letter theta */, "iota"/*
|
|
621
|
+
* 953
|
|
622
|
+
* :
|
|
623
|
+
* &
|
|
624
|
+
* #x3b9
|
|
625
|
+
* ;
|
|
626
|
+
* Greek
|
|
627
|
+
* small
|
|
628
|
+
* letter
|
|
629
|
+
* iota
|
|
630
|
+
*/,
|
|
631
|
+
"kappa"/*
|
|
632
|
+
* 954 : & #x3ba ; Greek small letter kappa
|
|
633
|
+
*/,
|
|
634
|
+
"lambda"/* 955 : λ Greek small letter lambda */, "mu"/*
|
|
635
|
+
* 956
|
|
636
|
+
* :
|
|
637
|
+
* &
|
|
638
|
+
* #x3bc
|
|
639
|
+
* ;
|
|
640
|
+
* Greek
|
|
641
|
+
* small
|
|
642
|
+
* letter
|
|
643
|
+
* mu
|
|
644
|
+
*/,
|
|
645
|
+
"nu"/*
|
|
646
|
+
* 957 : ν Greek small letter nu
|
|
647
|
+
*/, "xi"/* 958 : ξ Greek small letter xi */,
|
|
648
|
+
"omicron"/*
|
|
649
|
+
* 959 : & #x3bf ; Greek small letter omicron
|
|
650
|
+
*/, "pi"/* 960 : π Greek small letter pi */,
|
|
651
|
+
"rho"/*
|
|
652
|
+
* 961 : ρ Greek small letter rho
|
|
653
|
+
*/, "sigmaf"/*
|
|
654
|
+
* 962 : ς Greek small letter final
|
|
655
|
+
* sigma
|
|
656
|
+
*/, "sigma"/*
|
|
657
|
+
* 963 : σ Greek small
|
|
658
|
+
* letter sigma
|
|
659
|
+
*/, "tau"/*
|
|
660
|
+
* 964 : τ Greek
|
|
661
|
+
* small letter tau
|
|
662
|
+
*/, "upsilon"/*
|
|
663
|
+
* 965 : &
|
|
664
|
+
* #x3c5 ;
|
|
665
|
+
* Greek
|
|
666
|
+
* small
|
|
667
|
+
* letter
|
|
668
|
+
* upsilon
|
|
669
|
+
*/,
|
|
670
|
+
"phi"/* 966 : φ Greek small letter phi */, "chi"/*
|
|
671
|
+
* 967 :
|
|
672
|
+
* χ
|
|
673
|
+
* Greek
|
|
674
|
+
* small
|
|
675
|
+
* letter
|
|
676
|
+
* chi
|
|
677
|
+
*/,
|
|
678
|
+
"psi"/* 968 : ψ Greek small letter psi */, "omega"/*
|
|
679
|
+
* 969 :
|
|
680
|
+
* &
|
|
681
|
+
* #x3c9
|
|
682
|
+
* ;
|
|
683
|
+
* Greek
|
|
684
|
+
* small
|
|
685
|
+
* letter
|
|
686
|
+
* omega
|
|
687
|
+
*/,
|
|
688
|
+
"thetasym"/* 977 : ϑ Greek theta symbol */, "upsih"/*
|
|
689
|
+
* 978
|
|
690
|
+
* : &
|
|
691
|
+
* #
|
|
692
|
+
* x3d2
|
|
693
|
+
* ;
|
|
694
|
+
* Greek
|
|
695
|
+
* upsilon
|
|
696
|
+
* with
|
|
697
|
+
* hook
|
|
698
|
+
* symbol
|
|
699
|
+
*/,
|
|
700
|
+
"piv"/* 982 : ϖ Greek pi symbol */, "ensp"/*
|
|
701
|
+
* 8194 :
|
|
702
|
+
*   en
|
|
703
|
+
* space
|
|
704
|
+
*/, "emsp"/*
|
|
705
|
+
* 8195
|
|
706
|
+
* :
|
|
707
|
+
* &
|
|
708
|
+
* #x2003
|
|
709
|
+
* ;
|
|
710
|
+
* em
|
|
711
|
+
* space
|
|
712
|
+
*/,
|
|
713
|
+
"thinsp"/*
|
|
714
|
+
* 8201 :   thin space
|
|
715
|
+
*/, "zwnj"/*
|
|
716
|
+
* 8204 : ‌ ; zero width non -joiner
|
|
717
|
+
*/, "zwj"/*
|
|
718
|
+
* 8205 : ‍ zero width
|
|
719
|
+
* joiner
|
|
720
|
+
*/, "lrm"/*
|
|
721
|
+
* 8206 : ‎
|
|
722
|
+
* left-to-right mark
|
|
723
|
+
*/, "rlm"/*
|
|
724
|
+
* 8207 :
|
|
725
|
+
* ‏ ;
|
|
726
|
+
* right -
|
|
727
|
+
* to-left mark
|
|
728
|
+
*/,
|
|
729
|
+
"ndash"/* 8211 : – en dash */, "mdash"/*
|
|
730
|
+
* 8212 : —
|
|
731
|
+
* em dash
|
|
732
|
+
*/, "lsquo"/*
|
|
733
|
+
* 8216
|
|
734
|
+
* :
|
|
735
|
+
* ‘
|
|
736
|
+
* ;
|
|
737
|
+
* left
|
|
738
|
+
* single
|
|
739
|
+
* -6
|
|
740
|
+
* quotation
|
|
741
|
+
* mark
|
|
742
|
+
*/,
|
|
743
|
+
"rsquo"/* 8217 : ’ right single-9 quotation mark */,
|
|
744
|
+
"sbquo"/* 8218 : ‚ single low-9 quotation mark */,
|
|
745
|
+
"ldquo"/* 8220 : “ left double-66 quotation mark */,
|
|
746
|
+
"rdquo"/* 8221 : ” right double-99 quotation mark */,
|
|
747
|
+
"bdquo"/* 8222 : „ double low-99 quotation mark */,
|
|
748
|
+
"dagger"/* 8224 : † dagger */, "Dagger"/*
|
|
749
|
+
* 8225 : ‡
|
|
750
|
+
* double dagger
|
|
751
|
+
*/, "bull"/*
|
|
752
|
+
* 8226
|
|
753
|
+
* :
|
|
754
|
+
* •
|
|
755
|
+
* ;
|
|
756
|
+
* bullet
|
|
757
|
+
*/,
|
|
758
|
+
"hellip"/* 8230 : … horizontal ellipsis */, "permil"/*
|
|
759
|
+
* 8240
|
|
760
|
+
* :
|
|
761
|
+
* &
|
|
762
|
+
* #x2030
|
|
763
|
+
* ;
|
|
764
|
+
* per
|
|
765
|
+
* mille
|
|
766
|
+
* sign
|
|
767
|
+
*/,
|
|
768
|
+
"prime"/*
|
|
769
|
+
* 8242 : ′ prime
|
|
770
|
+
*/, "Prime"/* 8243 : ″ double prime */,
|
|
771
|
+
"lsaquo"/*
|
|
772
|
+
* 8249 : ‹ single left -pointing angle quotation
|
|
773
|
+
* mark
|
|
774
|
+
*/, "rsaquo"/*
|
|
775
|
+
* 8250 : › single right-pointing
|
|
776
|
+
* angle quotation mark
|
|
777
|
+
*/,
|
|
778
|
+
"oline"/* 8254 : ‾ overline */, "frasl"/*
|
|
779
|
+
* 8260 : ⁄
|
|
780
|
+
* fraction slash
|
|
781
|
+
*/, "euro"/*
|
|
782
|
+
* 8364
|
|
783
|
+
* :
|
|
784
|
+
* €
|
|
785
|
+
* ;
|
|
786
|
+
* Euro
|
|
787
|
+
* currency
|
|
788
|
+
* sign
|
|
789
|
+
*/,
|
|
790
|
+
"image"/* 8465 : ℑ black-letter capital i */,
|
|
791
|
+
"weierp"/* 8472 : ℘ script capital p */, "real"/*
|
|
792
|
+
* 8476 :
|
|
793
|
+
* &
|
|
794
|
+
* #x211c;
|
|
795
|
+
* black
|
|
796
|
+
* -letter
|
|
797
|
+
* capital
|
|
798
|
+
* r
|
|
799
|
+
*/,
|
|
800
|
+
"trade"/* 8482 : ™ trademark sign */, "alefsym"/*
|
|
801
|
+
* 8501 :
|
|
802
|
+
* ℵ
|
|
803
|
+
* ; alef
|
|
804
|
+
* symbol
|
|
805
|
+
*/,
|
|
806
|
+
"larr"/* 8592 : ← leftwards arrow */, "uarr"/*
|
|
807
|
+
* 8593 :
|
|
808
|
+
* ↑
|
|
809
|
+
* upwards
|
|
810
|
+
* arrow
|
|
811
|
+
*/,
|
|
812
|
+
"rarr"/* 8594 : → rightwards arrow */, "darr"/*
|
|
813
|
+
* 8595 :
|
|
814
|
+
* ↓
|
|
815
|
+
* downwards
|
|
816
|
+
* arrow
|
|
817
|
+
*/,
|
|
818
|
+
"harr"/* 8596 : ↔ left right arrow */, "crarr"/*
|
|
819
|
+
* 8629 :
|
|
820
|
+
* ↵
|
|
821
|
+
* downwards
|
|
822
|
+
* arrow
|
|
823
|
+
* with
|
|
824
|
+
* corner
|
|
825
|
+
* leftwards
|
|
826
|
+
*/,
|
|
827
|
+
"lArr"/* 8656 : ⇐ leftwards double arrow */, "uArr"/*
|
|
828
|
+
* 8657
|
|
829
|
+
* :
|
|
830
|
+
* &#
|
|
831
|
+
* x21d1
|
|
832
|
+
* ;
|
|
833
|
+
* upwards
|
|
834
|
+
* double
|
|
835
|
+
* arrow
|
|
836
|
+
*/,
|
|
837
|
+
"rArr"/* 8658 : ⇒ rightwards double arrow */, "dArr"/*
|
|
838
|
+
* 8659
|
|
839
|
+
* :
|
|
840
|
+
* &
|
|
841
|
+
* #x21d3
|
|
842
|
+
* ;
|
|
843
|
+
* downwards
|
|
844
|
+
* double
|
|
845
|
+
* arrow
|
|
846
|
+
*/,
|
|
847
|
+
"hArr"/* 8660 : ⇔ left right double arrow */,
|
|
848
|
+
"forall"/* 8704 : ∀ for all */, "part"/*
|
|
849
|
+
* 8706 : ∂
|
|
850
|
+
* partial
|
|
851
|
+
* differential
|
|
852
|
+
*/, "exist"/*
|
|
853
|
+
* 8707
|
|
854
|
+
* :
|
|
855
|
+
* ∃
|
|
856
|
+
* ;
|
|
857
|
+
* there
|
|
858
|
+
* exists
|
|
859
|
+
*/,
|
|
860
|
+
"empty"/* 8709 : ∅ empty set */, "nabla"/*
|
|
861
|
+
* 8711 :
|
|
862
|
+
* ∇ nabla
|
|
863
|
+
*/, "isin"/*
|
|
864
|
+
* 8712
|
|
865
|
+
* :
|
|
866
|
+
* &#
|
|
867
|
+
* x2208
|
|
868
|
+
* ;
|
|
869
|
+
* element
|
|
870
|
+
* of
|
|
871
|
+
*/,
|
|
872
|
+
"notin"/*
|
|
873
|
+
* 8713 : ∉ not an element of
|
|
874
|
+
*/, "ni"/*
|
|
875
|
+
* 8715 : ∋ contains as member
|
|
876
|
+
*/, "prod"/* 8719 : ∏ n-ary product */,
|
|
877
|
+
"sum"/*
|
|
878
|
+
* 8721 : ∑ n-ary summation
|
|
879
|
+
*/, "minus"/*
|
|
880
|
+
* 8722 : − ; minus sign
|
|
881
|
+
*/, "lowast"/*
|
|
882
|
+
* 8727 : ∗ asterisk
|
|
883
|
+
* operator
|
|
884
|
+
*/, "radic"/*
|
|
885
|
+
* 8730 : √ ;
|
|
886
|
+
* square root
|
|
887
|
+
*/, "prop"/*
|
|
888
|
+
* 8733 :
|
|
889
|
+
* ∝
|
|
890
|
+
* proportional
|
|
891
|
+
* to
|
|
892
|
+
*/,
|
|
893
|
+
"infin"/*
|
|
894
|
+
* 8734 : ∞ infinity
|
|
895
|
+
*/, "ang"/*
|
|
896
|
+
* 8736 : ∠ ; angle
|
|
897
|
+
*/, "and"/* 8743 : ∧ logical and */,
|
|
898
|
+
"or"/*
|
|
899
|
+
* 8744 : ∨ logical or
|
|
900
|
+
*/, "cap"/*
|
|
901
|
+
* 8745 : ∩ intersection
|
|
902
|
+
*/, "cup"/* 8746 : ∪ union */, "int"/*
|
|
903
|
+
* 8747
|
|
904
|
+
* :
|
|
905
|
+
* &#
|
|
906
|
+
* x222b
|
|
907
|
+
* ;
|
|
908
|
+
* integral
|
|
909
|
+
*/,
|
|
910
|
+
"there4"/*
|
|
911
|
+
* 8756 : ∴ therefore
|
|
912
|
+
*/, "sim"/*
|
|
913
|
+
* 8764 : ∼ tilde operator
|
|
914
|
+
*/,
|
|
915
|
+
"cong"/* 8773 : ≅ congruent to */, "asymp"/*
|
|
916
|
+
* 8776 :
|
|
917
|
+
* ≈
|
|
918
|
+
* asymptotic
|
|
919
|
+
* to
|
|
920
|
+
*/, "ne"/*
|
|
921
|
+
* 8800
|
|
922
|
+
* :
|
|
923
|
+
* &#
|
|
924
|
+
* x2260
|
|
925
|
+
* ;
|
|
926
|
+
* not
|
|
927
|
+
* equal
|
|
928
|
+
* to
|
|
929
|
+
*/,
|
|
930
|
+
"equiv"/* 8801 : ≡ identical to */, "le"/*
|
|
931
|
+
* 8804 :
|
|
932
|
+
* ≤
|
|
933
|
+
* less-than or
|
|
934
|
+
* equal to
|
|
935
|
+
*/, "ge"/*
|
|
936
|
+
* 8805
|
|
937
|
+
* :
|
|
938
|
+
* ≥
|
|
939
|
+
* ;
|
|
940
|
+
* greater
|
|
941
|
+
* -than
|
|
942
|
+
* or
|
|
943
|
+
* equal
|
|
944
|
+
* to
|
|
945
|
+
*/,
|
|
946
|
+
"sub"/* 8834 : ⊂ subset of */, "sup"/*
|
|
947
|
+
* 8835 : ⊃
|
|
948
|
+
* superset of
|
|
949
|
+
*/, "nsub"/*
|
|
950
|
+
* 8836 :
|
|
951
|
+
* &
|
|
952
|
+
* #x2284;
|
|
953
|
+
* not a
|
|
954
|
+
* subset
|
|
955
|
+
* of
|
|
956
|
+
*/,
|
|
957
|
+
"sube"/* 8838 : ⊆ subset of or equal to */, "supe"/*
|
|
958
|
+
* 8839
|
|
959
|
+
* :
|
|
960
|
+
* ⊇
|
|
961
|
+
* ;
|
|
962
|
+
* superset
|
|
963
|
+
* of
|
|
964
|
+
* or
|
|
965
|
+
* equal
|
|
966
|
+
* to
|
|
967
|
+
*/,
|
|
968
|
+
"oplus"/* 8853 : ⊕ circled plus */, "otimes"/*
|
|
969
|
+
* 8855 :
|
|
970
|
+
* ⊗
|
|
971
|
+
* circled
|
|
972
|
+
* times
|
|
973
|
+
*/,
|
|
974
|
+
"perp"/* 8869 : ⊥ up tack */, "sdot"/*
|
|
975
|
+
* 8901 : ⋅
|
|
976
|
+
* dot operator
|
|
977
|
+
*/, "lceil"/*
|
|
978
|
+
* 8968 :
|
|
979
|
+
* &
|
|
980
|
+
* #x2308
|
|
981
|
+
* ; left
|
|
982
|
+
* ceiling
|
|
983
|
+
*/,
|
|
984
|
+
"rceil"/* 8969 : ⌉ right ceiling */, "lfloor"/*
|
|
985
|
+
* 8970 :
|
|
986
|
+
* ⌊
|
|
987
|
+
* left
|
|
988
|
+
* floor
|
|
989
|
+
*/,
|
|
990
|
+
"rfloor"/* 8971 : ⌋ right floor */, "lang"/*
|
|
991
|
+
* 9001 :
|
|
992
|
+
* 〈
|
|
993
|
+
* left
|
|
994
|
+
* -pointing
|
|
995
|
+
* angle
|
|
996
|
+
* bracket
|
|
997
|
+
*/,
|
|
998
|
+
"rang"/* 9002 : 〉 right-pointing angle bracket */,
|
|
999
|
+
"loz"/* 9674 : ◊ lozenge */, "spades"/*
|
|
1000
|
+
* 9824 : ♠
|
|
1001
|
+
* black spade suit
|
|
1002
|
+
*/, "clubs"/*
|
|
1003
|
+
* 9827
|
|
1004
|
+
* :
|
|
1005
|
+
* ♣
|
|
1006
|
+
* ;
|
|
1007
|
+
* black
|
|
1008
|
+
* club
|
|
1009
|
+
* suit
|
|
1010
|
+
*/,
|
|
1011
|
+
"hearts"/* 9829 : ♥ black heart suit */, "diams"/*
|
|
1012
|
+
* 9830 :
|
|
1013
|
+
* &
|
|
1014
|
+
* #x2666
|
|
1015
|
+
* ;
|
|
1016
|
+
* black
|
|
1017
|
+
* diamond
|
|
1018
|
+
* suit
|
|
1019
|
+
*/, };
|
|
1020
|
+
char[] entityValues = {
|
|
1021
|
+
// W A R N I N G ! _ M A N U A L L Y _ I N S E R T E D _
|
|
1022
|
+
// G E N E
|
|
1023
|
+
// R A T E D _ C O D E
|
|
1024
|
+
// generated by Entities. Insert from
|
|
1025
|
+
// com\mindprod\entities\entitiesjustkeys.javafrag
|
|
1026
|
+
34/* " : " quotation mark */, 38/*
|
|
1027
|
+
* & : &
|
|
1028
|
+
* ampersand
|
|
1029
|
+
*/, 60/*
|
|
1030
|
+
* < :
|
|
1031
|
+
* <
|
|
1032
|
+
* less-than
|
|
1033
|
+
* sign
|
|
1034
|
+
*/, 62/*
|
|
1035
|
+
* >
|
|
1036
|
+
* :
|
|
1037
|
+
* >
|
|
1038
|
+
* ;
|
|
1039
|
+
* greater
|
|
1040
|
+
* -than
|
|
1041
|
+
* sign
|
|
1042
|
+
*/,
|
|
1043
|
+
160/* :   non-breaking space */, 161/*
|
|
1044
|
+
* ¡ :
|
|
1045
|
+
* ¡
|
|
1046
|
+
* inverted
|
|
1047
|
+
* exclamation
|
|
1048
|
+
* mark
|
|
1049
|
+
*/, 162/*
|
|
1050
|
+
* ¢
|
|
1051
|
+
* :
|
|
1052
|
+
* ¢
|
|
1053
|
+
* ;
|
|
1054
|
+
* cent
|
|
1055
|
+
* sign
|
|
1056
|
+
*/,
|
|
1057
|
+
163/* £ : £ pound sign */, 164/*
|
|
1058
|
+
* ¤ : ¤
|
|
1059
|
+
* currency sign
|
|
1060
|
+
*/, 165/*
|
|
1061
|
+
* ¥ :
|
|
1062
|
+
* ¥ yen
|
|
1063
|
+
* sign
|
|
1064
|
+
*/, 166/*
|
|
1065
|
+
* ¦
|
|
1066
|
+
* ; :
|
|
1067
|
+
* &
|
|
1068
|
+
* #xa6
|
|
1069
|
+
* ;
|
|
1070
|
+
* broken
|
|
1071
|
+
* bar
|
|
1072
|
+
*/,
|
|
1073
|
+
167/* § : § section sign */, 168/*
|
|
1074
|
+
* ¨ : ¨
|
|
1075
|
+
* diaeresis
|
|
1076
|
+
*/, 169/*
|
|
1077
|
+
* © :
|
|
1078
|
+
* ©
|
|
1079
|
+
* copyright
|
|
1080
|
+
* sign
|
|
1081
|
+
*/, 170/*
|
|
1082
|
+
* ª
|
|
1083
|
+
* ; :
|
|
1084
|
+
* &
|
|
1085
|
+
* #xaa
|
|
1086
|
+
* ;
|
|
1087
|
+
* feminine
|
|
1088
|
+
* ordinal
|
|
1089
|
+
* indicator
|
|
1090
|
+
*/,
|
|
1091
|
+
171/* « : « left guillemot */, 172/*
|
|
1092
|
+
* ¬ : ¬
|
|
1093
|
+
* not sign
|
|
1094
|
+
*/, 173/*
|
|
1095
|
+
* ­ :
|
|
1096
|
+
* ­
|
|
1097
|
+
* soft
|
|
1098
|
+
* hyphen
|
|
1099
|
+
*/,
|
|
1100
|
+
174/* ® : ® registered sign */, 175/*
|
|
1101
|
+
* ¯ : ¯
|
|
1102
|
+
* macron
|
|
1103
|
+
*/, 176/*
|
|
1104
|
+
* ° :
|
|
1105
|
+
* °
|
|
1106
|
+
* degree
|
|
1107
|
+
* sign
|
|
1108
|
+
*/,
|
|
1109
|
+
177/* ± : ± plus-minus sign */, 178/*
|
|
1110
|
+
* ² :
|
|
1111
|
+
* ²
|
|
1112
|
+
* superscript
|
|
1113
|
+
* two
|
|
1114
|
+
*/, 179/*
|
|
1115
|
+
* ³
|
|
1116
|
+
* :
|
|
1117
|
+
* ³
|
|
1118
|
+
* superscript
|
|
1119
|
+
* three
|
|
1120
|
+
*/,
|
|
1121
|
+
180/* ´ : ´ acute accent */, 181/*
|
|
1122
|
+
* µ : µ
|
|
1123
|
+
* micro sign
|
|
1124
|
+
*/, 182/*
|
|
1125
|
+
* ¶ :
|
|
1126
|
+
* ¶
|
|
1127
|
+
* pilcrow
|
|
1128
|
+
* sign
|
|
1129
|
+
*/, 183/*
|
|
1130
|
+
* &
|
|
1131
|
+
* middot
|
|
1132
|
+
* ;
|
|
1133
|
+
* :
|
|
1134
|
+
* &
|
|
1135
|
+
* #xb7
|
|
1136
|
+
* ;
|
|
1137
|
+
* middle
|
|
1138
|
+
* dot
|
|
1139
|
+
*/,
|
|
1140
|
+
184/* ¸ : ¸ cedilla */, 185/*
|
|
1141
|
+
* ¹ : ¹
|
|
1142
|
+
* superscript one
|
|
1143
|
+
*/, 186/*
|
|
1144
|
+
* º : º
|
|
1145
|
+
* masculine
|
|
1146
|
+
* ordinal
|
|
1147
|
+
* indicator
|
|
1148
|
+
*/, 187/*
|
|
1149
|
+
* »
|
|
1150
|
+
* :
|
|
1151
|
+
* »
|
|
1152
|
+
* right
|
|
1153
|
+
* guillemot
|
|
1154
|
+
*/,
|
|
1155
|
+
188/* ¼ : ¼ vulgar fraction 1/4 */, 189/*
|
|
1156
|
+
* ½ :
|
|
1157
|
+
* ½
|
|
1158
|
+
* vulgar
|
|
1159
|
+
* fraction
|
|
1160
|
+
* 1/2
|
|
1161
|
+
*/, 190/*
|
|
1162
|
+
* &
|
|
1163
|
+
* frac34
|
|
1164
|
+
* ;
|
|
1165
|
+
* :
|
|
1166
|
+
* &
|
|
1167
|
+
* #xbe
|
|
1168
|
+
* ;
|
|
1169
|
+
* vulgar
|
|
1170
|
+
* fraction
|
|
1171
|
+
* 3
|
|
1172
|
+
* /4
|
|
1173
|
+
*/,
|
|
1174
|
+
191/* ¿ : ¿ inverted question mark */, 192/*
|
|
1175
|
+
* À
|
|
1176
|
+
* :
|
|
1177
|
+
* À
|
|
1178
|
+
* Latin
|
|
1179
|
+
* capital
|
|
1180
|
+
* letter
|
|
1181
|
+
* A with
|
|
1182
|
+
* grave
|
|
1183
|
+
*/,
|
|
1184
|
+
193/*
|
|
1185
|
+
* Á : Á Latin capital letter A with acute
|
|
1186
|
+
*/, 194/*
|
|
1187
|
+
* Â : Â Latin capital letter A with
|
|
1188
|
+
* circumflex
|
|
1189
|
+
*/, 195/*
|
|
1190
|
+
* Ã : Ã Latin capital letter A
|
|
1191
|
+
* with tilde
|
|
1192
|
+
*/, 196/*
|
|
1193
|
+
* Ä : Ä Latin capital
|
|
1194
|
+
* letter A with diaeresis
|
|
1195
|
+
*/, 197/*
|
|
1196
|
+
* Å : Å Latin
|
|
1197
|
+
* capital letter A with ring
|
|
1198
|
+
* above
|
|
1199
|
+
*/, 198/*
|
|
1200
|
+
* Æ : Æ
|
|
1201
|
+
* Latin capital
|
|
1202
|
+
* letter AE
|
|
1203
|
+
*/, 199/*
|
|
1204
|
+
* Ç :
|
|
1205
|
+
* Ç
|
|
1206
|
+
* Latin
|
|
1207
|
+
* capital
|
|
1208
|
+
* letter C
|
|
1209
|
+
* with
|
|
1210
|
+
* cedilla
|
|
1211
|
+
*/, 200/*
|
|
1212
|
+
* &
|
|
1213
|
+
* Egrave
|
|
1214
|
+
* ;
|
|
1215
|
+
* :
|
|
1216
|
+
* &
|
|
1217
|
+
* #xc8
|
|
1218
|
+
* ;
|
|
1219
|
+
* Latin
|
|
1220
|
+
* capital
|
|
1221
|
+
* letter
|
|
1222
|
+
* E
|
|
1223
|
+
* with
|
|
1224
|
+
* grave
|
|
1225
|
+
*/,
|
|
1226
|
+
201/*
|
|
1227
|
+
* É : É Latin capital letter E with acute
|
|
1228
|
+
*/, 202/*
|
|
1229
|
+
* Ê : Ê Latin capital letter E with
|
|
1230
|
+
* circumflex
|
|
1231
|
+
*/, 203/*
|
|
1232
|
+
* Ë : Ë Latin capital letter E
|
|
1233
|
+
* with diaeresis
|
|
1234
|
+
*/, 204/*
|
|
1235
|
+
* Ì : Ì Latin capital
|
|
1236
|
+
* letter I with grave
|
|
1237
|
+
*/, 205/*
|
|
1238
|
+
* Í : Í Latin
|
|
1239
|
+
* capital letter I with
|
|
1240
|
+
* acute
|
|
1241
|
+
*/, 206/*
|
|
1242
|
+
* Î : Î
|
|
1243
|
+
* Latin capital
|
|
1244
|
+
* letter I with
|
|
1245
|
+
* circumflex
|
|
1246
|
+
*/, 207/*
|
|
1247
|
+
* Ï :
|
|
1248
|
+
* Ï
|
|
1249
|
+
* Latin
|
|
1250
|
+
* capital
|
|
1251
|
+
* letter I
|
|
1252
|
+
* with
|
|
1253
|
+
* diaeresis
|
|
1254
|
+
*/, 208/*
|
|
1255
|
+
* Ð
|
|
1256
|
+
* ;
|
|
1257
|
+
* :
|
|
1258
|
+
* &
|
|
1259
|
+
* #xd0
|
|
1260
|
+
* ;
|
|
1261
|
+
* Latin
|
|
1262
|
+
* capital
|
|
1263
|
+
* letter
|
|
1264
|
+
* eth
|
|
1265
|
+
*/,
|
|
1266
|
+
209/*
|
|
1267
|
+
* Ñ : Ñ Latin capital letter N with tilde
|
|
1268
|
+
*/, 210/*
|
|
1269
|
+
* Ò : Ò Latin capital letter O with
|
|
1270
|
+
* grave
|
|
1271
|
+
*/, 211/*
|
|
1272
|
+
* Ó : Ó Latin capital letter O
|
|
1273
|
+
* with acute
|
|
1274
|
+
*/, 212/*
|
|
1275
|
+
* Ô : Ô Latin capital
|
|
1276
|
+
* letter O with circumflex
|
|
1277
|
+
*/, 213/*
|
|
1278
|
+
* Õ : Õ Latin
|
|
1279
|
+
* capital letter O with
|
|
1280
|
+
* tilde
|
|
1281
|
+
*/, 214/*
|
|
1282
|
+
* Ö : Ö
|
|
1283
|
+
* Latin capital
|
|
1284
|
+
* letter O with
|
|
1285
|
+
* diaeresis
|
|
1286
|
+
*/, 215/*
|
|
1287
|
+
* × :
|
|
1288
|
+
* ×
|
|
1289
|
+
* multiplication
|
|
1290
|
+
* sign
|
|
1291
|
+
*/, 216/*
|
|
1292
|
+
* &
|
|
1293
|
+
* Oslash
|
|
1294
|
+
* ;
|
|
1295
|
+
* :
|
|
1296
|
+
* &
|
|
1297
|
+
* #xd8
|
|
1298
|
+
* ;
|
|
1299
|
+
* Latin
|
|
1300
|
+
* capital
|
|
1301
|
+
* letter
|
|
1302
|
+
* O
|
|
1303
|
+
* with
|
|
1304
|
+
* stroke
|
|
1305
|
+
*/,
|
|
1306
|
+
217/*
|
|
1307
|
+
* Ù : Ù Latin capital letter U with grave
|
|
1308
|
+
*/, 218/*
|
|
1309
|
+
* Ú : Ú Latin capital letter U with
|
|
1310
|
+
* acute
|
|
1311
|
+
*/, 219/*
|
|
1312
|
+
* Û : Û Latin capital letter U
|
|
1313
|
+
* with circumflex
|
|
1314
|
+
*/, 220/*
|
|
1315
|
+
* Ü : Ü Latin capital
|
|
1316
|
+
* letter U with diaeresis
|
|
1317
|
+
*/, 221/*
|
|
1318
|
+
* Ý : Ý Latin
|
|
1319
|
+
* capital letter Y with
|
|
1320
|
+
* acute
|
|
1321
|
+
*/, 222/*
|
|
1322
|
+
* Þ : Þ
|
|
1323
|
+
* Latin capital
|
|
1324
|
+
* letter Thorn
|
|
1325
|
+
*/, 223/*
|
|
1326
|
+
* ß :
|
|
1327
|
+
* ß
|
|
1328
|
+
* Latin
|
|
1329
|
+
* small
|
|
1330
|
+
* letter
|
|
1331
|
+
* sharp s
|
|
1332
|
+
*/, 224/*
|
|
1333
|
+
* &
|
|
1334
|
+
* agrave
|
|
1335
|
+
* ;
|
|
1336
|
+
* :
|
|
1337
|
+
* &
|
|
1338
|
+
* #xe0
|
|
1339
|
+
* ;
|
|
1340
|
+
* Latin
|
|
1341
|
+
* small
|
|
1342
|
+
* letter
|
|
1343
|
+
* a
|
|
1344
|
+
* with
|
|
1345
|
+
* grave
|
|
1346
|
+
*/,
|
|
1347
|
+
225/* á : á Latin small letter a with acute */,
|
|
1348
|
+
226/*
|
|
1349
|
+
* â : â Latin small letter a with circumflex
|
|
1350
|
+
*/,
|
|
1351
|
+
227/* ã : ã Latin small letter a with tilde */,
|
|
1352
|
+
228/*
|
|
1353
|
+
* ä : ä Latin small letter a with diaeresis
|
|
1354
|
+
*/, 229/*
|
|
1355
|
+
* å : å Latin small letter a with ring
|
|
1356
|
+
* above
|
|
1357
|
+
*/, 230/*
|
|
1358
|
+
* æ : æ Latin lowercase ligature
|
|
1359
|
+
* ae
|
|
1360
|
+
*/, 231/*
|
|
1361
|
+
* ç : ç Latin small
|
|
1362
|
+
* letter c with cedilla
|
|
1363
|
+
*/, 232/*
|
|
1364
|
+
* è : è Latin
|
|
1365
|
+
* small letter e with grave
|
|
1366
|
+
*/, 233/*
|
|
1367
|
+
* é : é
|
|
1368
|
+
* Latin small letter
|
|
1369
|
+
* e with acute
|
|
1370
|
+
*/, 234/*
|
|
1371
|
+
* ê :
|
|
1372
|
+
* ê
|
|
1373
|
+
* Latin
|
|
1374
|
+
* small
|
|
1375
|
+
* letter e
|
|
1376
|
+
* with
|
|
1377
|
+
* circumflex
|
|
1378
|
+
*/, 235/*
|
|
1379
|
+
* ë
|
|
1380
|
+
* ;
|
|
1381
|
+
* :
|
|
1382
|
+
* &
|
|
1383
|
+
* #xeb
|
|
1384
|
+
* ;
|
|
1385
|
+
* Latin
|
|
1386
|
+
* small
|
|
1387
|
+
* letter
|
|
1388
|
+
* e
|
|
1389
|
+
* with
|
|
1390
|
+
* diaeresis
|
|
1391
|
+
*/,
|
|
1392
|
+
236/* ì : ì Latin small letter i with grave */,
|
|
1393
|
+
237/* í : í Latin small letter i with acute */,
|
|
1394
|
+
238/*
|
|
1395
|
+
* î : î Latin small letter i with circumflex
|
|
1396
|
+
*/, 239/*
|
|
1397
|
+
* ï : ï Latin small letter i with
|
|
1398
|
+
* diaeresis
|
|
1399
|
+
*/, 240/* ð : ð Latin small letter eth */,
|
|
1400
|
+
241/* ñ : ñ Latin small letter n with tilde */,
|
|
1401
|
+
242/* ò : ò Latin small letter o with grave */,
|
|
1402
|
+
243/* ó : ó Latin small letter o with acute */,
|
|
1403
|
+
244/*
|
|
1404
|
+
* ô : ô Latin small letter o with circumflex
|
|
1405
|
+
*/, 245/*
|
|
1406
|
+
* õ : õ Latin small letter o with tilde
|
|
1407
|
+
*/, 246/*
|
|
1408
|
+
* ö : ö Latin small letter o with
|
|
1409
|
+
* diaeresis
|
|
1410
|
+
*/, 247/*
|
|
1411
|
+
* ÷ : ÷ division sign
|
|
1412
|
+
*/, 248/*
|
|
1413
|
+
* ø : ø Latin
|
|
1414
|
+
* small letter o with stroke
|
|
1415
|
+
*/, 249/*
|
|
1416
|
+
* ù : ù
|
|
1417
|
+
* Latin small letter
|
|
1418
|
+
* u with grave
|
|
1419
|
+
*/, 250/*
|
|
1420
|
+
* ú ;
|
|
1421
|
+
* : & #xfa ;
|
|
1422
|
+
* Latin
|
|
1423
|
+
* small
|
|
1424
|
+
* letter u
|
|
1425
|
+
* with acute
|
|
1426
|
+
*/, 251/*
|
|
1427
|
+
* û
|
|
1428
|
+
* ;
|
|
1429
|
+
* :
|
|
1430
|
+
* &
|
|
1431
|
+
* #xfb
|
|
1432
|
+
* ;
|
|
1433
|
+
* Latin
|
|
1434
|
+
* small
|
|
1435
|
+
* letter
|
|
1436
|
+
* u
|
|
1437
|
+
* with
|
|
1438
|
+
* circumflex
|
|
1439
|
+
*/,
|
|
1440
|
+
252/*
|
|
1441
|
+
* ü : ü Latin small letter u with diaeresis
|
|
1442
|
+
*/, 253/*
|
|
1443
|
+
* ý : ý Latin small letter y with acute
|
|
1444
|
+
*/, 254/*
|
|
1445
|
+
* þ : þ Latin small letter thorn
|
|
1446
|
+
*/, 255/*
|
|
1447
|
+
* ÿ : ÿ Latin small letter
|
|
1448
|
+
* y with diaeresis
|
|
1449
|
+
*/, 338/*
|
|
1450
|
+
* Œ : Œ Latin
|
|
1451
|
+
* capital ligature oe
|
|
1452
|
+
*/, 339/*
|
|
1453
|
+
* &oelig ; : & #x153
|
|
1454
|
+
* ; Latin small
|
|
1455
|
+
* ligature oe
|
|
1456
|
+
*/, 352/*
|
|
1457
|
+
* Š :
|
|
1458
|
+
* Š
|
|
1459
|
+
* Latin
|
|
1460
|
+
* capital
|
|
1461
|
+
* letter S
|
|
1462
|
+
* with caron
|
|
1463
|
+
*/, 353/*
|
|
1464
|
+
* &
|
|
1465
|
+
* scaron
|
|
1466
|
+
* ;
|
|
1467
|
+
* :
|
|
1468
|
+
* &
|
|
1469
|
+
* #x161
|
|
1470
|
+
* ;
|
|
1471
|
+
* Latin
|
|
1472
|
+
* small
|
|
1473
|
+
* letter
|
|
1474
|
+
* s
|
|
1475
|
+
* with
|
|
1476
|
+
* caron
|
|
1477
|
+
*/,
|
|
1478
|
+
376/*
|
|
1479
|
+
* Ÿ : Ÿ Latin capital letter Y with diaeresis
|
|
1480
|
+
*/, 402/*
|
|
1481
|
+
* ƒ : ƒ Latin small letter f with hook
|
|
1482
|
+
*/, 710/*
|
|
1483
|
+
* ˆ : ˆ modifier letter
|
|
1484
|
+
* circumflex accent
|
|
1485
|
+
*/, 732/*
|
|
1486
|
+
* ˜ : ˜ small tilde
|
|
1487
|
+
*/, 913/*
|
|
1488
|
+
* &Alpha ; : & #x391 ; Greek
|
|
1489
|
+
* capital letter Alpha
|
|
1490
|
+
*/, 914/*
|
|
1491
|
+
* Β : Β
|
|
1492
|
+
* Greek capital
|
|
1493
|
+
* letter Beta
|
|
1494
|
+
*/, 915/*
|
|
1495
|
+
* Γ :
|
|
1496
|
+
* Γ
|
|
1497
|
+
* Greek
|
|
1498
|
+
* capital
|
|
1499
|
+
* letter
|
|
1500
|
+
* Gamma
|
|
1501
|
+
*/, 916/*
|
|
1502
|
+
* &Delta
|
|
1503
|
+
* ;
|
|
1504
|
+
* :
|
|
1505
|
+
* &
|
|
1506
|
+
* #x394
|
|
1507
|
+
* ;
|
|
1508
|
+
* Greek
|
|
1509
|
+
* capital
|
|
1510
|
+
* letter
|
|
1511
|
+
* Delta
|
|
1512
|
+
*/,
|
|
1513
|
+
917/*
|
|
1514
|
+
* Ε : Ε Greek capital letter Epsilon
|
|
1515
|
+
*/, 918/*
|
|
1516
|
+
* Ζ : Ζ Greek capital letter Zeta
|
|
1517
|
+
*/, 919/*
|
|
1518
|
+
* Η : Η ; Greek capital letter Eta
|
|
1519
|
+
*/, 920/*
|
|
1520
|
+
* &Theta ; : & #x398 ; Greek capital
|
|
1521
|
+
* letter Theta
|
|
1522
|
+
*/, 921/*
|
|
1523
|
+
* Ι : Ι Greek
|
|
1524
|
+
* capital letter Iota
|
|
1525
|
+
*/, 922/*
|
|
1526
|
+
* &Kappa ; : &#
|
|
1527
|
+
* x39a; Greek
|
|
1528
|
+
* capital letter
|
|
1529
|
+
* Kappa
|
|
1530
|
+
*/, 923/*
|
|
1531
|
+
* Λ :
|
|
1532
|
+
* Λ
|
|
1533
|
+
* Greek
|
|
1534
|
+
* capital
|
|
1535
|
+
* letter
|
|
1536
|
+
* Lambda
|
|
1537
|
+
*/, 924/*
|
|
1538
|
+
* &Mu
|
|
1539
|
+
* ;
|
|
1540
|
+
* :
|
|
1541
|
+
* &
|
|
1542
|
+
* #x39c
|
|
1543
|
+
* ;
|
|
1544
|
+
* Greek
|
|
1545
|
+
* capital
|
|
1546
|
+
* letter
|
|
1547
|
+
* Mu
|
|
1548
|
+
*/,
|
|
1549
|
+
925/*
|
|
1550
|
+
* Ν : Ν Greek capital letter Nu
|
|
1551
|
+
*/, 926/*
|
|
1552
|
+
* Ξ : Ξ Greek capital letter Xi
|
|
1553
|
+
*/, 927/*
|
|
1554
|
+
* Ο : Ο Greek capital letter
|
|
1555
|
+
* Omicron
|
|
1556
|
+
*/, 928/*
|
|
1557
|
+
* &Pi ; : & #x3a0 ; Greek capital
|
|
1558
|
+
* letter Pi
|
|
1559
|
+
*/, 929/*
|
|
1560
|
+
* Ρ : Ρ Greek
|
|
1561
|
+
* capital letter Rho
|
|
1562
|
+
*/, 931/*
|
|
1563
|
+
* Σ : Σ
|
|
1564
|
+
* Greek capital
|
|
1565
|
+
* letter Sigma
|
|
1566
|
+
*/, 932/*
|
|
1567
|
+
* Τ :
|
|
1568
|
+
* Τ
|
|
1569
|
+
* Greek
|
|
1570
|
+
* capital
|
|
1571
|
+
* letter Tau
|
|
1572
|
+
*/, 933/*
|
|
1573
|
+
* &
|
|
1574
|
+
* Upsilon
|
|
1575
|
+
* ;
|
|
1576
|
+
* :
|
|
1577
|
+
* &#
|
|
1578
|
+
* x3a5
|
|
1579
|
+
* ;
|
|
1580
|
+
* Greek
|
|
1581
|
+
* capital
|
|
1582
|
+
* letter
|
|
1583
|
+
* Upsilon
|
|
1584
|
+
*/,
|
|
1585
|
+
934/*
|
|
1586
|
+
* Φ : Φ Greek capital letter Phi
|
|
1587
|
+
*/, 935/*
|
|
1588
|
+
* Χ : Χ ; Greek capital letter Chi
|
|
1589
|
+
*/, 936/*
|
|
1590
|
+
* &Psi ; : & #x3a8 ; Greek capital letter
|
|
1591
|
+
* Psi
|
|
1592
|
+
*/, 937/*
|
|
1593
|
+
* &Omega ; : &# x3a9; Greek capital
|
|
1594
|
+
* letter Omega
|
|
1595
|
+
*/, 945/*
|
|
1596
|
+
* α : α Greek
|
|
1597
|
+
* small letter alpha
|
|
1598
|
+
*/, 946/*
|
|
1599
|
+
* β : β ;
|
|
1600
|
+
* Greek small letter
|
|
1601
|
+
* beta
|
|
1602
|
+
*/, 947/*
|
|
1603
|
+
* γ :
|
|
1604
|
+
* γ
|
|
1605
|
+
* Greek
|
|
1606
|
+
* small
|
|
1607
|
+
* letter
|
|
1608
|
+
* gamma
|
|
1609
|
+
*/, 948/*
|
|
1610
|
+
* &delta
|
|
1611
|
+
* ;
|
|
1612
|
+
* :
|
|
1613
|
+
* &#
|
|
1614
|
+
* x3b4
|
|
1615
|
+
* ;
|
|
1616
|
+
* Greek
|
|
1617
|
+
* small
|
|
1618
|
+
* letter
|
|
1619
|
+
* delta
|
|
1620
|
+
*/,
|
|
1621
|
+
949/*
|
|
1622
|
+
* ε : ε Greek small letter epsilon
|
|
1623
|
+
*/, 950/*
|
|
1624
|
+
* ζ : ζ Greek small letter zeta
|
|
1625
|
+
*/, 951/*
|
|
1626
|
+
* η : η ; Greek small letter eta
|
|
1627
|
+
*/, 952/*
|
|
1628
|
+
* θ : θ Greek small
|
|
1629
|
+
* letter theta
|
|
1630
|
+
*/, 953/*
|
|
1631
|
+
* ι : ι ; Greek
|
|
1632
|
+
* small letter iota
|
|
1633
|
+
*/, 954/*
|
|
1634
|
+
* &kappa ; : & #x3ba
|
|
1635
|
+
* ; Greek small
|
|
1636
|
+
* letter kappa
|
|
1637
|
+
*/, 955/*
|
|
1638
|
+
* &lambda ;
|
|
1639
|
+
* : &# x3bb;
|
|
1640
|
+
* Greek
|
|
1641
|
+
* small
|
|
1642
|
+
* letter
|
|
1643
|
+
* lambda
|
|
1644
|
+
*/, 956/*
|
|
1645
|
+
* &mu
|
|
1646
|
+
* ;
|
|
1647
|
+
* :
|
|
1648
|
+
* &
|
|
1649
|
+
* #x3bc
|
|
1650
|
+
* ;
|
|
1651
|
+
* Greek
|
|
1652
|
+
* small
|
|
1653
|
+
* letter
|
|
1654
|
+
* mu
|
|
1655
|
+
*/,
|
|
1656
|
+
957/*
|
|
1657
|
+
* ν : ν Greek small letter nu
|
|
1658
|
+
*/, 958/* ξ : ξ Greek small letter xi */, 959/*
|
|
1659
|
+
* &
|
|
1660
|
+
* omicron
|
|
1661
|
+
* ; :
|
|
1662
|
+
* &
|
|
1663
|
+
* #x3bf
|
|
1664
|
+
* ;
|
|
1665
|
+
* Greek
|
|
1666
|
+
* small
|
|
1667
|
+
* letter
|
|
1668
|
+
* omicron
|
|
1669
|
+
*/,
|
|
1670
|
+
960/* π : π Greek small letter pi */, 961/*
|
|
1671
|
+
* ρ :
|
|
1672
|
+
* ρ
|
|
1673
|
+
* Greek small
|
|
1674
|
+
* letter rho
|
|
1675
|
+
*/, 962/*
|
|
1676
|
+
* &sigmaf
|
|
1677
|
+
* ; :
|
|
1678
|
+
* &
|
|
1679
|
+
* #x3c2
|
|
1680
|
+
* ;
|
|
1681
|
+
* Greek
|
|
1682
|
+
* small
|
|
1683
|
+
* letter
|
|
1684
|
+
* final
|
|
1685
|
+
* sigma
|
|
1686
|
+
*/,
|
|
1687
|
+
963/*
|
|
1688
|
+
* σ : σ Greek small letter sigma
|
|
1689
|
+
*/, 964/*
|
|
1690
|
+
* τ : τ ; Greek small letter tau
|
|
1691
|
+
*/, 965/*
|
|
1692
|
+
* υ : υ Greek small letter
|
|
1693
|
+
* upsilon
|
|
1694
|
+
*/, 966/*
|
|
1695
|
+
* φ : φ Greek small letter
|
|
1696
|
+
* phi
|
|
1697
|
+
*/, 967/*
|
|
1698
|
+
* &chi ; : & #x3c7 ; Greek
|
|
1699
|
+
* small letter chi
|
|
1700
|
+
*/, 968/*
|
|
1701
|
+
* ψ : ψ
|
|
1702
|
+
* Greek small letter
|
|
1703
|
+
* psi
|
|
1704
|
+
*/, 969/*
|
|
1705
|
+
* ω :
|
|
1706
|
+
* ω
|
|
1707
|
+
* Greek
|
|
1708
|
+
* small
|
|
1709
|
+
* letter
|
|
1710
|
+
* omega
|
|
1711
|
+
*/, 977/*
|
|
1712
|
+
* &
|
|
1713
|
+
* thetasym
|
|
1714
|
+
* ;
|
|
1715
|
+
* :
|
|
1716
|
+
* &
|
|
1717
|
+
* #x3d1
|
|
1718
|
+
* ;
|
|
1719
|
+
* Greek
|
|
1720
|
+
* theta
|
|
1721
|
+
* symbol
|
|
1722
|
+
*/,
|
|
1723
|
+
978/*
|
|
1724
|
+
* ϒ : ϒ Greek upsilon with hook symbol
|
|
1725
|
+
*/, 982/* ϖ : ϖ Greek pi symbol */, 8194/*
|
|
1726
|
+
*  
|
|
1727
|
+
* :
|
|
1728
|
+
*  
|
|
1729
|
+
* ; en
|
|
1730
|
+
* space
|
|
1731
|
+
*/,
|
|
1732
|
+
8195/*
|
|
1733
|
+
*   :   ; em space
|
|
1734
|
+
*/, 8201/*   :   thin space */, 8204/*
|
|
1735
|
+
* ‌
|
|
1736
|
+
* :
|
|
1737
|
+
* ‌
|
|
1738
|
+
* ; zero
|
|
1739
|
+
* width
|
|
1740
|
+
* non
|
|
1741
|
+
* -joiner
|
|
1742
|
+
*/,
|
|
1743
|
+
8205/*
|
|
1744
|
+
* ‍ : ‍ zero width joiner
|
|
1745
|
+
*/, 8206/* ‎ : ‎ left-to-right mark */,
|
|
1746
|
+
8207/*
|
|
1747
|
+
* ‏ : ‏ right -to-left mark
|
|
1748
|
+
*/, 8211/* – : – en dash */, 8212/*
|
|
1749
|
+
* &mdash ; :
|
|
1750
|
+
* & #x2014 ;
|
|
1751
|
+
* em dash
|
|
1752
|
+
*/,
|
|
1753
|
+
8216/*
|
|
1754
|
+
* ‘ : ‘ left single-6 quotation mark
|
|
1755
|
+
*/, 8217/*
|
|
1756
|
+
* &rsquo ; : &# x2019 ; right single -9 quotation
|
|
1757
|
+
* mark
|
|
1758
|
+
*/, 8218/*
|
|
1759
|
+
* ‚ : ‚ single low-9
|
|
1760
|
+
* quotation mark
|
|
1761
|
+
*/, 8220/*
|
|
1762
|
+
* “ : “ left
|
|
1763
|
+
* double-66 quotation mark
|
|
1764
|
+
*/, 8221/*
|
|
1765
|
+
* ” : ”
|
|
1766
|
+
* right double-99
|
|
1767
|
+
* quotation mark
|
|
1768
|
+
*/, 8222/*
|
|
1769
|
+
* &bdquo ; : &
|
|
1770
|
+
* #x201e ;
|
|
1771
|
+
* double low
|
|
1772
|
+
* -99
|
|
1773
|
+
* quotation
|
|
1774
|
+
* mark
|
|
1775
|
+
*/, 8224/*
|
|
1776
|
+
* &dagger
|
|
1777
|
+
* ; :
|
|
1778
|
+
* &
|
|
1779
|
+
* #x2020
|
|
1780
|
+
* ;
|
|
1781
|
+
* dagger
|
|
1782
|
+
*/,
|
|
1783
|
+
8225/*
|
|
1784
|
+
* ‡ : ‡ double dagger
|
|
1785
|
+
*/, 8226/*
|
|
1786
|
+
* &bull ; : & #x2022 ; bullet
|
|
1787
|
+
*/, 8230/*
|
|
1788
|
+
* &hellip ; : &# x2026 ; horizontal
|
|
1789
|
+
* ellipsis
|
|
1790
|
+
*/, 8240/*
|
|
1791
|
+
* ‰ : ‰ per mille
|
|
1792
|
+
* sign
|
|
1793
|
+
*/, 8242/*
|
|
1794
|
+
* ′ : ′
|
|
1795
|
+
* prime
|
|
1796
|
+
*/, 8243/*
|
|
1797
|
+
* &Prime ; :
|
|
1798
|
+
* &# x2033 ;
|
|
1799
|
+
* double prime
|
|
1800
|
+
*/, 8249/*
|
|
1801
|
+
* &lsaquo
|
|
1802
|
+
* ; :
|
|
1803
|
+
* &
|
|
1804
|
+
* #x2039
|
|
1805
|
+
* ;
|
|
1806
|
+
* single
|
|
1807
|
+
* left
|
|
1808
|
+
* -
|
|
1809
|
+
* pointing
|
|
1810
|
+
* angle
|
|
1811
|
+
* quotation
|
|
1812
|
+
* mark
|
|
1813
|
+
*/,
|
|
1814
|
+
8250/*
|
|
1815
|
+
* › : › single right-pointing angle quotation
|
|
1816
|
+
* mark
|
|
1817
|
+
*/, 8254/*
|
|
1818
|
+
* ‾ : ‾ overline
|
|
1819
|
+
*/, 8260/*
|
|
1820
|
+
* &frasl ; : & #x2044 ; fraction slash
|
|
1821
|
+
*/, 8364/*
|
|
1822
|
+
* € : € Euro
|
|
1823
|
+
* currency sign
|
|
1824
|
+
*/, 8465/*
|
|
1825
|
+
* &image ; : &# x2111 ;
|
|
1826
|
+
* black - letter
|
|
1827
|
+
* capital i
|
|
1828
|
+
*/, 8472/*
|
|
1829
|
+
* ℘ :
|
|
1830
|
+
* ℘
|
|
1831
|
+
* script
|
|
1832
|
+
* capital p
|
|
1833
|
+
*/, 8476/*
|
|
1834
|
+
* &real
|
|
1835
|
+
* ; :
|
|
1836
|
+
* &
|
|
1837
|
+
* #x211c
|
|
1838
|
+
* ;
|
|
1839
|
+
* black
|
|
1840
|
+
* -
|
|
1841
|
+
* letter
|
|
1842
|
+
* capital
|
|
1843
|
+
* r
|
|
1844
|
+
*/,
|
|
1845
|
+
8482/*
|
|
1846
|
+
* ™ : ™ trademark sign
|
|
1847
|
+
*/, 8501/*
|
|
1848
|
+
* &alefsym ; : & #x2135 ; alef symbol
|
|
1849
|
+
*/, 8592/*
|
|
1850
|
+
* ← : ← ; leftwards arrow
|
|
1851
|
+
*/, 8593/*
|
|
1852
|
+
* ↑ : ↑ upwards
|
|
1853
|
+
* arrow
|
|
1854
|
+
*/, 8594/*
|
|
1855
|
+
* → : →
|
|
1856
|
+
* rightwards arrow
|
|
1857
|
+
*/, 8595/*
|
|
1858
|
+
* ↓ :
|
|
1859
|
+
* ↓ ;
|
|
1860
|
+
* downwards
|
|
1861
|
+
* arrow
|
|
1862
|
+
*/, 8596/*
|
|
1863
|
+
* &harr
|
|
1864
|
+
* ; :
|
|
1865
|
+
* &
|
|
1866
|
+
* #x2194
|
|
1867
|
+
* ;
|
|
1868
|
+
* left
|
|
1869
|
+
* right
|
|
1870
|
+
* arrow
|
|
1871
|
+
*/,
|
|
1872
|
+
8629/*
|
|
1873
|
+
* ↵ : ↵ downwards arrow with corner leftwards
|
|
1874
|
+
*/, 8656/*
|
|
1875
|
+
* ⇐ : ⇐ ; leftwards double arrow
|
|
1876
|
+
*/, 8657/*
|
|
1877
|
+
* &uArr ; : & #x21d1 ; upwards double
|
|
1878
|
+
* arrow
|
|
1879
|
+
*/, 8658/*
|
|
1880
|
+
* ⇒ : ⇒ rightwards
|
|
1881
|
+
* double arrow
|
|
1882
|
+
*/, 8659/*
|
|
1883
|
+
* ⇓ : ⇓
|
|
1884
|
+
* downwards double
|
|
1885
|
+
* arrow
|
|
1886
|
+
*/, 8660/*
|
|
1887
|
+
* ⇔ :
|
|
1888
|
+
* ⇔ ;
|
|
1889
|
+
* left right
|
|
1890
|
+
* double arrow
|
|
1891
|
+
*/, 8704/*
|
|
1892
|
+
* &forall
|
|
1893
|
+
* ; :
|
|
1894
|
+
* &
|
|
1895
|
+
* #x2200
|
|
1896
|
+
* ;
|
|
1897
|
+
* for
|
|
1898
|
+
* all
|
|
1899
|
+
*/,
|
|
1900
|
+
8706/*
|
|
1901
|
+
* ∂ : ∂ partial differential
|
|
1902
|
+
*/, 8707/*
|
|
1903
|
+
* ∃ : ∃ there exists
|
|
1904
|
+
*/, 8709/* ∅ : ∅ empty set */,
|
|
1905
|
+
8711/*
|
|
1906
|
+
* ∇ : ∇ nabla
|
|
1907
|
+
*/, 8712/*
|
|
1908
|
+
* ∈ : ∈ element of
|
|
1909
|
+
*/,
|
|
1910
|
+
8713/* ∉ : ∉ not an element of */, 8715/*
|
|
1911
|
+
* ∋ :
|
|
1912
|
+
* ∋
|
|
1913
|
+
* contains
|
|
1914
|
+
* as member
|
|
1915
|
+
*/,
|
|
1916
|
+
8719/* ∏ : ∏ n-ary product */, 8721/*
|
|
1917
|
+
* ∑ :
|
|
1918
|
+
* ∑ n-ary
|
|
1919
|
+
* summation
|
|
1920
|
+
*/, 8722/*
|
|
1921
|
+
* &minus
|
|
1922
|
+
* ; :
|
|
1923
|
+
* &#
|
|
1924
|
+
* x2212
|
|
1925
|
+
* ;
|
|
1926
|
+
* minus
|
|
1927
|
+
* sign
|
|
1928
|
+
*/,
|
|
1929
|
+
8727/*
|
|
1930
|
+
* ∗ : ∗ asterisk operator
|
|
1931
|
+
*/, 8730/*
|
|
1932
|
+
* √ : √ square root
|
|
1933
|
+
*/, 8733/*
|
|
1934
|
+
* ∝ : ∝ proportional to
|
|
1935
|
+
*/, 8734/*
|
|
1936
|
+
* &infin ; : & #x221e ; infinity
|
|
1937
|
+
*/, 8736/*
|
|
1938
|
+
* ∠ : ∠ ;
|
|
1939
|
+
* angle
|
|
1940
|
+
*/, 8743/*
|
|
1941
|
+
* ∧ :
|
|
1942
|
+
* ∧
|
|
1943
|
+
* logical and
|
|
1944
|
+
*/, 8744/*
|
|
1945
|
+
* ∨
|
|
1946
|
+
* :
|
|
1947
|
+
* &#
|
|
1948
|
+
* x2228
|
|
1949
|
+
* ;
|
|
1950
|
+
* logical
|
|
1951
|
+
* or
|
|
1952
|
+
*/,
|
|
1953
|
+
8745/*
|
|
1954
|
+
* ∩ : ∩ intersection
|
|
1955
|
+
*/, 8746/* ∪ : ∪ union */, 8747/*
|
|
1956
|
+
* ∫ :
|
|
1957
|
+
* ∫
|
|
1958
|
+
* integral
|
|
1959
|
+
*/, 8756/*
|
|
1960
|
+
* &there4
|
|
1961
|
+
* ; :
|
|
1962
|
+
* &#
|
|
1963
|
+
* x2234
|
|
1964
|
+
* ;
|
|
1965
|
+
* therefore
|
|
1966
|
+
*/,
|
|
1967
|
+
8764/*
|
|
1968
|
+
* &sim ; : & #x223c ; tilde operator
|
|
1969
|
+
*/, 8773/*
|
|
1970
|
+
* ≅ : ≅ ; congruent to
|
|
1971
|
+
*/, 8776/* ≈ : ≈ asymptotic to */,
|
|
1972
|
+
8800/*
|
|
1973
|
+
* ≠ : ≠ not equal to
|
|
1974
|
+
*/, 8801/*
|
|
1975
|
+
* &equiv ; : &# x2261 ; identical to
|
|
1976
|
+
*/, 8804/*
|
|
1977
|
+
* ≤ : ≤ less-than or equal to
|
|
1978
|
+
*/, 8805/*
|
|
1979
|
+
* ≥ : ≥ greater -than
|
|
1980
|
+
* or equal to
|
|
1981
|
+
*/, 8834/*
|
|
1982
|
+
* ⊂ : ⊂
|
|
1983
|
+
* subset of
|
|
1984
|
+
*/, 8835/*
|
|
1985
|
+
* ⊃ :
|
|
1986
|
+
* ⊃ ;
|
|
1987
|
+
* superset of
|
|
1988
|
+
*/, 8836/*
|
|
1989
|
+
* &nsub
|
|
1990
|
+
* ; :
|
|
1991
|
+
* &
|
|
1992
|
+
* #x2284
|
|
1993
|
+
* ;
|
|
1994
|
+
* not
|
|
1995
|
+
* a
|
|
1996
|
+
* subset
|
|
1997
|
+
* of
|
|
1998
|
+
*/,
|
|
1999
|
+
8838/*
|
|
2000
|
+
* ⊆ : ⊆ ; subset of or equal to
|
|
2001
|
+
*/, 8839/*
|
|
2002
|
+
* ⊇ : ⊇ superset of or equal to
|
|
2003
|
+
*/, 8853/*
|
|
2004
|
+
* &oplus ; : &# x2295 ; circled plus
|
|
2005
|
+
*/, 8855/*
|
|
2006
|
+
* ⊗ : ⊗ circled
|
|
2007
|
+
* times
|
|
2008
|
+
*/, 8869/*
|
|
2009
|
+
* &perp ; : & #x22a5 ;
|
|
2010
|
+
* up tack
|
|
2011
|
+
*/, 8901/*
|
|
2012
|
+
* ⋅ :
|
|
2013
|
+
* ⋅ ;
|
|
2014
|
+
* dot operator
|
|
2015
|
+
*/, 8968/*
|
|
2016
|
+
* &lceil
|
|
2017
|
+
* ; :
|
|
2018
|
+
* &
|
|
2019
|
+
* #x2308
|
|
2020
|
+
* ;
|
|
2021
|
+
* left
|
|
2022
|
+
* ceiling
|
|
2023
|
+
*/,
|
|
2024
|
+
8969/*
|
|
2025
|
+
* ⌉ : ⌉ right ceiling
|
|
2026
|
+
*/, 8970/*
|
|
2027
|
+
* &lfloor ; : &# x230a ; left floor
|
|
2028
|
+
*/, 8971/* ⌋ : ⌋ right floor */,
|
|
2029
|
+
9001/*
|
|
2030
|
+
* ⟨ : 〈 ; left- pointing angle bracket
|
|
2031
|
+
*/, 9002/*
|
|
2032
|
+
* ⟩ : 〉 ; right - pointing angle
|
|
2033
|
+
* bracket
|
|
2034
|
+
*/, 9674/* ◊ : ◊ lozenge */, 9824/*
|
|
2035
|
+
* &spades
|
|
2036
|
+
* ; :
|
|
2037
|
+
* &
|
|
2038
|
+
* #x2660
|
|
2039
|
+
* ;
|
|
2040
|
+
* black
|
|
2041
|
+
* spade
|
|
2042
|
+
* suit
|
|
2043
|
+
*/,
|
|
2044
|
+
9827/*
|
|
2045
|
+
* ♣ : ♣ black club suit
|
|
2046
|
+
*/, 9829/*
|
|
2047
|
+
* &hearts ; : &# x2665 ; black heart suit
|
|
2048
|
+
*/, 9830/*
|
|
2049
|
+
* ♦ : ♦ black diamond suit
|
|
2050
|
+
*/, };
|
|
2051
|
+
// allow 50% extra space for faster lookup.
|
|
2052
|
+
entityToChar = new HashMap<String, Character>(
|
|
2053
|
+
entityKeys.length * 150 / 100);
|
|
2054
|
+
for (int i = 0; i < entityKeys.length; i++) {
|
|
2055
|
+
// leave out nbsp so it can be specially handled if entity not
|
|
2056
|
+
// found.
|
|
2057
|
+
if (!entityKeys[i].equals("nbsp")) {
|
|
2058
|
+
entityToChar.put(entityKeys[i], entityValues[i]);
|
|
2059
|
+
}
|
|
2060
|
+
// add also ' for strip but not insert. optional for XML, not
|
|
2061
|
+
// used in HTML.
|
|
2062
|
+
entityToChar.put("apos", (char) 39);
|
|
2063
|
+
}
|
|
2064
|
+
}// end static
|
|
2065
|
+
|
|
2066
|
+
/**
|
|
2067
|
+
* convert an entity to a single char.
|
|
2068
|
+
*
|
|
2069
|
+
* @param bareEntity
|
|
2070
|
+
* String entity to convert convert. must have lead & and trail ;
|
|
2071
|
+
* stripped; may have form: #x12ff or #123 or lt or nbsp style
|
|
2072
|
+
* entity. Works faster if entity in lower case.
|
|
2073
|
+
* @param howToTranslateNbsp
|
|
2074
|
+
* char you would like   translated to, usually ' ' or (char)
|
|
2075
|
+
* 160
|
|
2076
|
+
*
|
|
2077
|
+
* @return equivalent character. 0 if not recognised.
|
|
2078
|
+
*/
|
|
2079
|
+
public static char bareHTMLEntityToChar(String bareEntity,
|
|
2080
|
+
char howToTranslateNbsp) {
|
|
2081
|
+
// first check for alpha entity
|
|
2082
|
+
Character code = entityToChar.get(bareEntity);
|
|
2083
|
+
if (code != null) {
|
|
2084
|
+
return code;
|
|
2085
|
+
}
|
|
2086
|
+
code = entityToChar.get(bareEntity.toLowerCase());
|
|
2087
|
+
if (code != null) {
|
|
2088
|
+
return code;
|
|
2089
|
+
}
|
|
2090
|
+
// nbsp is not in hashMap. We test for it specially.
|
|
2091
|
+
if (bareEntity.length() == 4 && bareEntity.equals("nbsp")
|
|
2092
|
+
|| bareEntity.equals("NBSP")) {
|
|
2093
|
+
return howToTranslateNbsp;
|
|
2094
|
+
}
|
|
2095
|
+
// check at least have &_#1_; (no & or ; at this point )
|
|
2096
|
+
if (bareEntity.length() < 2) {
|
|
2097
|
+
return 0;
|
|
2098
|
+
}
|
|
2099
|
+
try {
|
|
2100
|
+
if (bareEntity.charAt(0) == '#') {
|
|
2101
|
+
final char secondChar = bareEntity.charAt(1);
|
|
2102
|
+
if (secondChar == 'x' || secondChar == 'X') {
|
|
2103
|
+
// handle hex entities of form &_#x12ff_;
|
|
2104
|
+
// ensure at least have &_#xf_;
|
|
2105
|
+
if (bareEntity.length() < 3) {
|
|
2106
|
+
return 0;
|
|
2107
|
+
}
|
|
2108
|
+
// had &_#x123D_;
|
|
2109
|
+
return (char) Integer.parseInt(bareEntity.substring(2),
|
|
2110
|
+
/* hex */
|
|
2111
|
+
16);
|
|
2112
|
+
} else {
|
|
2113
|
+
// handle decimal entities
|
|
2114
|
+
// had &_#123_;
|
|
2115
|
+
return (char) Integer.parseInt(bareEntity.substring(1));
|
|
2116
|
+
}
|
|
2117
|
+
} else {
|
|
2118
|
+
// some unrecognized/malformed bareEntity
|
|
2119
|
+
return 0;
|
|
2120
|
+
}
|
|
2121
|
+
} catch (NumberFormatException e) {
|
|
2122
|
+
return 0;
|
|
2123
|
+
}
|
|
2124
|
+
}// end entityToChar
|
|
2125
|
+
|
|
2126
|
+
/**
|
|
2127
|
+
* strips tags and entities from HTML. Leaves \n \r unchanged.
|
|
2128
|
+
*
|
|
2129
|
+
* @param text
|
|
2130
|
+
* to flatten
|
|
2131
|
+
* @param translateNbspTo
|
|
2132
|
+
* char you would like translated to, usually ' ' or
|
|
2133
|
+
* (char) 160 .
|
|
2134
|
+
*
|
|
2135
|
+
* @return flattened text
|
|
2136
|
+
*/
|
|
2137
|
+
public static String flattenHTML(String text, char translateNbspTo) {
|
|
2138
|
+
return stripHTMLEntities(stripHTMLTags(text), translateNbspTo);
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
/**
|
|
2142
|
+
* strips tags and entities from XML..
|
|
2143
|
+
*
|
|
2144
|
+
* @param text
|
|
2145
|
+
* to flatten
|
|
2146
|
+
*
|
|
2147
|
+
* @return flattened text
|
|
2148
|
+
*/
|
|
2149
|
+
public static String flattenXML(String text) {
|
|
2150
|
+
return stripXMLEntities(stripXMLTags(text));
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
/**
|
|
2154
|
+
* Checks a number of gauntlet conditions to ensure this is a valid entity.
|
|
2155
|
+
* Converts Entity to corresponding char.
|
|
2156
|
+
*
|
|
2157
|
+
* @param possBareEntityWithSemicolon
|
|
2158
|
+
* string that may hold an entity. Lead & must be stripped, but
|
|
2159
|
+
* may optionally contain text past the ;
|
|
2160
|
+
* @param translateNbspTo
|
|
2161
|
+
* char you would like nbsp translated to, usually ' ' or (char)
|
|
2162
|
+
* 160 .
|
|
2163
|
+
*
|
|
2164
|
+
* @return corresponding unicode character, or 0 if the entity is invalid.
|
|
2165
|
+
*/
|
|
2166
|
+
protected static char possBareHTMLEntityWithSemicolonToChar(
|
|
2167
|
+
String possBareEntityWithSemicolon, char translateNbspTo) {
|
|
2168
|
+
if (possBareEntityWithSemicolon.length() < SHORTEST_ENTITY - 1) {
|
|
2169
|
+
return 0;
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
// find the trailing ;
|
|
2173
|
+
int whereSemi = possBareEntityWithSemicolon.indexOf(';',
|
|
2174
|
+
SHORTEST_ENTITY - 2/* where start looking */);
|
|
2175
|
+
if (whereSemi < SHORTEST_ENTITY - 2) {
|
|
2176
|
+
return 0;
|
|
2177
|
+
}
|
|
2178
|
+
|
|
2179
|
+
return bareHTMLEntityToChar(
|
|
2180
|
+
possBareEntityWithSemicolon.substring(0, whereSemi),
|
|
2181
|
+
translateNbspTo);
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
/**
|
|
2185
|
+
* Checks a number of gauntlet conditions to ensure this is a valid entity.
|
|
2186
|
+
* Converts Entity to corresponding char.
|
|
2187
|
+
*
|
|
2188
|
+
* @param possBareEntityWithSemicolon
|
|
2189
|
+
* string that may hold an entity. Lead & must be stripped, but
|
|
2190
|
+
* may optionally contain text past the ;
|
|
2191
|
+
*
|
|
2192
|
+
* @return corresponding unicode character, or 0 if the entity is invalid.
|
|
2193
|
+
* nbsp -> (char) 160
|
|
2194
|
+
*/
|
|
2195
|
+
public static char possEntityToChar(String possBareEntityWithSemicolon) {
|
|
2196
|
+
return possBareHTMLEntityWithSemicolonToChar(
|
|
2197
|
+
possBareEntityWithSemicolon, UNICODE_NBSP_160_0x0a);
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
/**
|
|
2201
|
+
* Prepares tags for removal, to ensure they are replaced by a space
|
|
2202
|
+
* <tr>
|
|
2203
|
+
* <td>
|
|
2204
|
+
* <th><br>
|
|
2205
|
+
* <p>
|
|
2206
|
+
* </tr>
|
|
2207
|
+
* </td></th></br></p> --> _
|
|
2208
|
+
* <tr
|
|
2209
|
+
* _
|
|
2210
|
+
* </tr
|
|
2211
|
+
* etc.
|
|
2212
|
+
*
|
|
2213
|
+
* @param html
|
|
2214
|
+
* input HTML or XML
|
|
2215
|
+
*
|
|
2216
|
+
* @return raw text, with spacing tags fluffed up with a space so they will
|
|
2217
|
+
* later be removed with a space.
|
|
2218
|
+
*/
|
|
2219
|
+
private static String preStripIndividualTags(String html) {
|
|
2220
|
+
StringBuilder sb = new StringBuilder(html.length() * 110 / 100);
|
|
2221
|
+
char prevChar = 0;
|
|
2222
|
+
for (int i = 0; i < html.length(); i++) {
|
|
2223
|
+
final char c = html.charAt(i);
|
|
2224
|
+
if (c == '<') {
|
|
2225
|
+
// startsWith index need not be inside the String.
|
|
2226
|
+
int look = (html.startsWith("/", i + 1)) ? i + 2 : i + 1;
|
|
2227
|
+
|
|
2228
|
+
// handle <tr </tr etc.
|
|
2229
|
+
for (String tag : spacingTags) {
|
|
2230
|
+
if (html.startsWith(tag, look)) {
|
|
2231
|
+
// no need to add space if one there already.
|
|
2232
|
+
if (prevChar > ' ') {
|
|
2233
|
+
// insert space before <
|
|
2234
|
+
sb.append(' ');
|
|
2235
|
+
}
|
|
2236
|
+
break;
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
}
|
|
2240
|
+
sb.append(c);
|
|
2241
|
+
prevChar = c;
|
|
2242
|
+
}
|
|
2243
|
+
return sb.toString();
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
/**
|
|
2247
|
+
* Converts HTML to text converting entities such as " back to " and
|
|
2248
|
+
* < back to < Ordinary text passes unchanged. Also strips decimal and
|
|
2249
|
+
* hex entities and stray HTML entities.
|
|
2250
|
+
*
|
|
2251
|
+
* @param text
|
|
2252
|
+
* raw text to be processed. Must not be null.
|
|
2253
|
+
* @param translateNbspTo
|
|
2254
|
+
* char you would like translated to, usually ' ' or
|
|
2255
|
+
* (char) 160 .
|
|
2256
|
+
*
|
|
2257
|
+
* @return translated text. It also handles HTML 4.0 entities such as
|
|
2258
|
+
* ♥ { and  -> 160. null input returns
|
|
2259
|
+
* null.
|
|
2260
|
+
*/
|
|
2261
|
+
public static String stripHTMLEntities(String text, char translateNbspTo) {
|
|
2262
|
+
if (text == null) {
|
|
2263
|
+
return null;
|
|
2264
|
+
}
|
|
2265
|
+
if (text.indexOf('&') < 0) {
|
|
2266
|
+
// are no entities, nothing to do
|
|
2267
|
+
return text;
|
|
2268
|
+
}
|
|
2269
|
+
int originalTextLength = text.length();
|
|
2270
|
+
StringBuilder sb = new StringBuilder(originalTextLength);
|
|
2271
|
+
for (int i = 0; i < originalTextLength; i++) {
|
|
2272
|
+
int whereAmp = text.indexOf('&', i);
|
|
2273
|
+
if (whereAmp < 0) {
|
|
2274
|
+
// no more &s, we are done
|
|
2275
|
+
// append all remaining text
|
|
2276
|
+
sb.append(text.substring(i));
|
|
2277
|
+
break;
|
|
2278
|
+
} else {
|
|
2279
|
+
// append all text to left of next &
|
|
2280
|
+
sb.append(text.substring(i, whereAmp));
|
|
2281
|
+
// avoid reprocessing those chars
|
|
2282
|
+
i = whereAmp;
|
|
2283
|
+
// text.charAt(i) is an &
|
|
2284
|
+
// possEntity has lead & stripped.
|
|
2285
|
+
String possEntity = text.substring(i + 1,
|
|
2286
|
+
Math.min(i + LONGEST_ENTITY, text.length()));
|
|
2287
|
+
char t = possBareHTMLEntityWithSemicolonToChar(possEntity,
|
|
2288
|
+
translateNbspTo);
|
|
2289
|
+
if (t != 0) {
|
|
2290
|
+
// was a good entity, keep its equivalent char.
|
|
2291
|
+
sb.append(t);
|
|
2292
|
+
// avoid reprocessing chars forming the entity
|
|
2293
|
+
int whereSemi = possEntity
|
|
2294
|
+
.indexOf(";", SHORTEST_ENTITY - 2);
|
|
2295
|
+
i += whereSemi + 1;
|
|
2296
|
+
} else {
|
|
2297
|
+
// treat & just as ordinary character
|
|
2298
|
+
sb.append('&');
|
|
2299
|
+
}
|
|
2300
|
+
}// end else
|
|
2301
|
+
}// end for
|
|
2302
|
+
// if result is not shorter, we did not do anything. Saves RAM.
|
|
2303
|
+
return (sb.length() == originalTextLength) ? text : sb.toString();
|
|
2304
|
+
}// end stripEntities
|
|
2305
|
+
|
|
2306
|
+
// -------------------------- STATIC METHODS --------------------------
|
|
2307
|
+
|
|
2308
|
+
/**
|
|
2309
|
+
* remove all text between <applet.. </applet>, <style...
|
|
2310
|
+
* </style> <script... </script>
|
|
2311
|
+
*
|
|
2312
|
+
* @param s
|
|
2313
|
+
* HTML string to strip tag pairs out of.
|
|
2314
|
+
*
|
|
2315
|
+
* @return string with tag pairs stripped out.
|
|
2316
|
+
*/
|
|
2317
|
+
private static String stripHTMLTagPairs(String s) {
|
|
2318
|
+
String[] tags = { "applet", "APPLET", "style", "STYLE", "script",
|
|
2319
|
+
"SCRIPT" };
|
|
2320
|
+
for (final String tag : tags) {
|
|
2321
|
+
final String beginTag = "<" + tag;
|
|
2322
|
+
final String endTag = "</" + tag + ">";
|
|
2323
|
+
int begin = 0;
|
|
2324
|
+
while (begin < s.length()
|
|
2325
|
+
&& (begin = s.indexOf(beginTag, begin)) >= 0) {
|
|
2326
|
+
final int end;
|
|
2327
|
+
if ((end = s.indexOf(endTag, begin + beginTag.length())) > 0) {
|
|
2328
|
+
// chop out the <applet ... </applet>
|
|
2329
|
+
|
|
2330
|
+
s = s.substring(0, begin)
|
|
2331
|
+
+ s.substring(end + endTag.length());
|
|
2332
|
+
} else {
|
|
2333
|
+
// no matching end tag, chop off entire end
|
|
2334
|
+
s = s.substring(0, begin);
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2337
|
+
}
|
|
2338
|
+
return s;
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2341
|
+
/**
|
|
2342
|
+
* Removes tags from HTML leaving just the raw text. Leaves entities as is,
|
|
2343
|
+
* e.g. does not convert & back to &. similar to code in Quoter. Also
|
|
2344
|
+
* removes <!-- --> comments. Presumes perfectly formed HTML, no >
|
|
2345
|
+
* in comments, all <...> balanced. Also removes text between applet,
|
|
2346
|
+
* style and script tag pairs. Leaves and other entities as is.
|
|
2347
|
+
*
|
|
2348
|
+
* @param html
|
|
2349
|
+
* input HTML
|
|
2350
|
+
*
|
|
2351
|
+
* @return raw text, with whitespaces collapsed to a single space, trimmed.
|
|
2352
|
+
*/
|
|
2353
|
+
public static String stripHTMLTags(String html) {
|
|
2354
|
+
html = stripHTMLTagPairs(html);
|
|
2355
|
+
return stripIndividualTags(html);
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
/**
|
|
2359
|
+
* Removes tags from HTML leaving just the raw text. Leaves entities as is,
|
|
2360
|
+
* e.g. Presumes perfectly formed HTML. <b> </b> <i> </i>
|
|
2361
|
+
* <tr xxx>
|
|
2362
|
+
* etc removed leaving nothing behind.
|
|
2363
|
+
*
|
|
2364
|
+
* @param html
|
|
2365
|
+
* input HTML or XML
|
|
2366
|
+
*
|
|
2367
|
+
* @return raw text, with whitespaces collapsed to a single space, trimmed.
|
|
2368
|
+
*/
|
|
2369
|
+
private static String stripIndividualTags(String html) {
|
|
2370
|
+
html = html.trim();
|
|
2371
|
+
if (html.indexOf('<') < 0) {
|
|
2372
|
+
return html;
|
|
2373
|
+
}
|
|
2374
|
+
// condition String so that some tags will always turn into space.
|
|
2375
|
+
html = preStripIndividualTags(html);
|
|
2376
|
+
int numChars = html.length();
|
|
2377
|
+
// will only shrink.
|
|
2378
|
+
StringBuilder result = new StringBuilder(numChars);
|
|
2379
|
+
|
|
2380
|
+
/**
|
|
2381
|
+
* are we inside a tag, eg. inside <td xxxx>
|
|
2382
|
+
*/
|
|
2383
|
+
boolean inside = false;
|
|
2384
|
+
|
|
2385
|
+
/**
|
|
2386
|
+
* Have we cleaned any White Space?
|
|
2387
|
+
*/
|
|
2388
|
+
boolean cleanedAnyWhitespace = false;
|
|
2389
|
+
|
|
2390
|
+
/**
|
|
2391
|
+
* Was the last char we saw a space? We use this to collapse spaces.
|
|
2392
|
+
*/
|
|
2393
|
+
boolean lastCharSpace = false;
|
|
2394
|
+
for (int i = 0; i < numChars; i++) {
|
|
2395
|
+
char c = html.charAt(i);
|
|
2396
|
+
switch (c) {
|
|
2397
|
+
default:
|
|
2398
|
+
if (c < ' ') {
|
|
2399
|
+
// handle stray whitespace
|
|
2400
|
+
if (!inside) {
|
|
2401
|
+
lastCharSpace = true;
|
|
2402
|
+
cleanedAnyWhitespace = true;
|
|
2403
|
+
}
|
|
2404
|
+
} else {
|
|
2405
|
+
// ordinary character, ignored inside a tag
|
|
2406
|
+
if (!inside) {
|
|
2407
|
+
if (lastCharSpace) {
|
|
2408
|
+
// deal with pending whitespace
|
|
2409
|
+
result.append(' ');
|
|
2410
|
+
lastCharSpace = false;
|
|
2411
|
+
}
|
|
2412
|
+
result.append(c);
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
break;
|
|
2416
|
+
|
|
2417
|
+
case '<':
|
|
2418
|
+
inside = true;
|
|
2419
|
+
// ignore
|
|
2420
|
+
break;
|
|
2421
|
+
|
|
2422
|
+
case '>':
|
|
2423
|
+
inside = false;
|
|
2424
|
+
// ignore
|
|
2425
|
+
break;
|
|
2426
|
+
|
|
2427
|
+
case ' ':
|
|
2428
|
+
if (!inside) {
|
|
2429
|
+
lastCharSpace = true;
|
|
2430
|
+
}
|
|
2431
|
+
break;
|
|
2432
|
+
|
|
2433
|
+
// whitespace
|
|
2434
|
+
case '\r':
|
|
2435
|
+
case '\t':
|
|
2436
|
+
case '\n':
|
|
2437
|
+
case 127:
|
|
2438
|
+
case UNICODE_NBSP_160_0x0a:
|
|
2439
|
+
|
|
2440
|
+
if (!inside) {
|
|
2441
|
+
lastCharSpace = true;
|
|
2442
|
+
cleanedAnyWhitespace = true;
|
|
2443
|
+
}
|
|
2444
|
+
break;
|
|
2445
|
+
}
|
|
2446
|
+
}// end for
|
|
2447
|
+
// return original string trimmed if we did not really change anything
|
|
2448
|
+
return (cleanedAnyWhitespace || result.length() != numChars) ? result
|
|
2449
|
+
.toString().trim() : html;
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
/**
|
|
2453
|
+
* Converts XML to text converting entities such as " back to " and
|
|
2454
|
+
* < back to < Ordinary text passes unchanged. Also strips decimal and
|
|
2455
|
+
* hex entities and stray HTML entities.
|
|
2456
|
+
*
|
|
2457
|
+
* @param text
|
|
2458
|
+
* raw XML text to be processed. Must not be null.
|
|
2459
|
+
*
|
|
2460
|
+
* @return translated text. null input returns null.
|
|
2461
|
+
*/
|
|
2462
|
+
public static String stripXMLEntities(String text) {
|
|
2463
|
+
return stripHTMLEntities(text, ' ');
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
/**
|
|
2467
|
+
* Removes tags from XML leaving just the raw text. Leaves entities as is,
|
|
2468
|
+
* e.g. does not convert & back to &. similar to code in Quoter. Also
|
|
2469
|
+
* removes <!-- --> comments. Presumes perfectly formed XML, no >
|
|
2470
|
+
* in comments, all <...> balanced. Leaves entities as is.
|
|
2471
|
+
*
|
|
2472
|
+
* @param xml
|
|
2473
|
+
* input XML
|
|
2474
|
+
*
|
|
2475
|
+
* @return raw text, with whitespaces collapsed to a single space, trimmed.
|
|
2476
|
+
*/
|
|
2477
|
+
public static String stripXMLTags(String xml) {
|
|
2478
|
+
return stripIndividualTags(xml);
|
|
2479
|
+
}
|
|
2480
|
+
}
|